Bu sayfada, Google Photos Library API'ye nasıl devam ettirilebilir yükleme isteği gönderileceği açıklanmaktadır. REST protokolüyle açabilirsiniz. Bu protokol, bir yükleme işlemini devam ettirmenize olanak sağlar veri akışını kesintiye uğrattığında veri akışını bozar.
İstemci kitaplıkları kullanan bir geliştiriciyseniz bazı istemci kitaplıklarının devam ettirilebilir yüklemeler için yerel destek sağlama.
Aşağıdaki durumlarda devam ettirilebilir yükleme seçeneğini kullanın:
- Büyük dosyalar yüklüyorsunuz.
- Ağ kesintisi veya başka bir iletim hatası olasılığı yüksek (örneğin, bir mobil uygulamadan dosya yüklüyorsanız).
Devam ettirilebilir yüklemeler, ağ üzerindeyken bant genişliği kullanımınızı da azaltabilir başarısız olur, çünkü büyük dosya yüklemelerini 3000'den fazla başlar.
1. Adım: Yükleme oturumu başlatma
Şu kullanıcıya POST isteği göndererek devam ettirilebilir bir yükleme oturumu başlatın:
https://photoslibrary.googleapis.com/v1/uploads
Devam ettirilebilir yüklemeyi kullanma
Bu istekte döndürülen URL, dosyayı yükleyin.
POST isteği aşağıdaki üstbilgileri içermelidir:
Başlık alanları | |
---|---|
Content-Length |
İstek gövdesi boş olduğundan 0 olarak ayarlayın. |
X-Goog-Upload-Command |
start olarak ayarlayın. |
X-Goog-Upload-Content-Type |
Dosyanın MIME türüne ayarlayın. Örneğin,
image/jpeg |
X-Goog-Upload-Protocol |
resumable olarak ayarlayın. |
X-Goog-Upload-Raw-Size |
Ayarlanacak dosya verilerinin toplam bayt sayısına aktarılmıştır. |
Aşağıda bir POST isteği başlığı verilmiştir:
POST https://photoslibrary.googleapis.com/v1/uploads Authorization: Bearer oauth2-token Content-Length: 0 X-Goog-Upload-Command: start X-Goog-Upload-Content-Type: mime-type X-Goog-Upload-Protocol: resumable X-Goog-Upload-Raw-Size: bytes-of-file
2. adım: Oturum URL'sini kaydetme
Başarılı olursa POST isteği bir 200 OK
HTTP durum kodu döndürür.
başlık.
X-Goog-Upload-URL: url-to-make-uploads-to X-Goog-Upload-Chunk-Granularity: chunk-granularity-in-bytes
x-goog-upload-chunk-granularity
başlık alanı bayt hizalamasını içeriyor
istemci tarafından gönderilen tüm veri parçalarının boyut ayrıntı düzeyini gösterir. Yükleme
birden fazla parça halinde yapılır. Son yükleme dışındaki tüm yüklemeler,
bu değerin katları halinde yapılmalıdır. Yani dosyanın yüklenen baytları
bu değerle uyumlu olmalıdır. Son parçada, kalan
bayt olarak kabul edilir.
X-Goog-Upload-URL
başlık alanı, şunların yapılması için kullanılması gereken benzersiz bir URL içeriyor:
ve kalan tüm istekler doğrultusunda yüklemeyi tamamlamalıdır. Bunu kopyalayıp kaydet
devam ettirilebilir oturum URL'si oluşturun.
3. Adım: Dosyayı yükleme
Devam ettirilebilir bir oturumla dosya yüklemenin iki yolu vardır:
- Tek bir istekte. Bu genellikle en iyisi olan yaklaşımdır daha az istek gerektirdiği ve bu nedenle daha iyi performans gösterdiği için.
-
Birden fazla parça halinde. Bu yaklaşımda, yüklenen her video verileri topluca birleştirerek birden fazla istekte bulunabilirsiniz. Veriler parçalı
x-goog-upload-chunk-granularity
sayısının katları. Gerekirse parçalanan istekler yeniden denenebilir.Bu yaklaşımı aşağıdaki durumlarda kullanın:
- Tek bir hesapta aktarılan veri miktarını azaltmanız isteğinde bulunabilirsiniz. Projenin hedefleri için sabit bir zaman sınırı talep edebilir.
- Yüklemeyi gösteren özelleştirilmiş bir gösterge sağlamanız gerekir takip edebilirsiniz.
- Verileri silmenin ne zaman güvenli olduğunu bilmeniz gerekir.
Tekli İstek
Dosyayı tek bir istekte yüklemek için:
- Devam ettirilebilir oturum URL'sine bir
POST
isteği oluşturun. - Dosyanın verilerini istek gövdesine ekleyin.
Aşağıdaki HTTP üstbilgilerini ekleyin:
Content-Length
: Veri kümesindeki bayt sayısına dosyası olarak kaydedebilirsiniz.X-Goog-Upload-Command
:upload, finalize
olarak ayarlandı.
İsteği gönderin.
Yükleme isteği kesintiye uğrarsa veya bir 5xx
alırsanız
devam etmek istiyorsanız
Yükleme kesintiye uğradı.
İstek başarılı olursa 200 OK
HTTP durumunu alırsınız
kodu ile bir yükleme jetonu ekleyebilirsiniz.
Oluştur
medya öğesine gönderebilirsiniz.
Birden Çok Parça
Dosyayı birden fazla parça halinde yüklemek için:
- Devam ettirilebilir oturum URL'sine bir
POST
isteği oluşturun. -
Parçanın verilerini istek gövdesine ekleyin.
Yüklemeyi tamamlayan son parça dışında, kabul edilen parça boyutunun katları şeklinde oluşturulduğundan emin olun. Şunu sakla: yığın boyutunu mümkün olduğunca büyük tutun.
-
Aşağıdaki HTTP üstbilgilerini ekleyin:
Content-Length
: Veri kümesindeki bayt sayısına emin olun.X-Goog-Upload-Command
:upload
olarak ayarlandı. Son parça içinupload, finalize
olarak ayarlayın.X-Goog-Upload-Offset
: bayt yazılmalıdır. Baytların yüklenmesi gerektiğini unutmayın. var. İlk ofset0
.
- İsteği gönderin.
Yükleme isteği kesintiye uğrarsa veya bir
5xx
alırsanız devam etmek istiyorsanız Yükleme kesintiye uğradı. - Dosyada kalan her parça için yukarıdaki adımları tekrarlayın.
İstek başarılı olursa 200 OK
HTTP durumunu alırsınız
kodu ile bir yükleme jetonu ekleyebilirsiniz.
Oluştur
medya öğesine gönderebilirsiniz.
Örnek
Tekli İstek
Aşağıdaki örnekte 3.039.417 baytlık JPEG dosyası yükleyebilir.
POST https://photoslibrary.googleapis.com/v1/uploads HTTP/1.1 Content-Length: 0 X-Goog-Upload-Command: start X-Goog-Upload-Content-Type: image/jpeg X-Goog-Upload-Protocol: resumable X-Goog-Upload-Raw-Size: 3039417 [no body]
Yanıt, yükleme URL'sini ve beklenen parça boyutunu içerir:
HTTP/1.1 200 OK X-Goog-Upload-URL: https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable X-Goog-Upload-Chunk-Granularity: 262144
Son yükleme isteği:
POST https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable HTTP/1.1 Content-Length: 3039417 X-Goog-Upload-Command: upload, finalize X-Goog-Upload-Offset: 0 [BYTES 0-4199999]
Birden Çok Parça
Aşağıdaki örnekte
Devam ettirilebilir oturumu kullanarak, birden çok parça halinde 3.039.417 baytlık JPEG dosyası
URL ve önceki adımda elde edilen, kabul edilen parça boyutu ayrıntı düzeyi.
Bu örnekte,
başlık alanına (x-goog-upload-chunk-granularity
)
yükleme oturumu başlatıldı. Her yüklemenin
ve 262.144'ün katlarıdır.
Yükleme URL'sini ve parça boyutunu almak için yükleme oturumunu başlatın adımları uygulayın:
POST https://photoslibrary.googleapis.com/v1/uploads HTTP/1.1 Content-Length: 0 X-Goog-Upload-Command: start X-Goog-Upload-Content-Type: image/jpeg X-Goog-Upload-Protocol: resumable X-Goog-Upload-Raw-Size: 3039417 [no body]
Yanıt, yükleme URL'sini ve beklenen parça boyutunu içerir:
HTTP/1.1 200 OK X-Goog-Upload-URL: https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable X-Goog-Upload-Chunk-Granularity: 262144
İlk parça:
POST https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable HTTP/1.1 Content-Length: 1048576 X-Goog-Upload-Command: upload X-Goog-Upload-Offset: 0 [BYTES 0-1048575]
İkinci yığın:
POST https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable HTTP/1.1 Content-Length: 1048576 X-Goog-Upload-Command: upload X-Goog-Upload-Offset: 1048576 [BYTES 1048576-2097151]
Son parça:
POST https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable HTTP/1.1 Content-Length: 942265 X-Goog-Upload-Command: upload, finalize X-Goog-Upload-Offset: 2097152 [BYTES 2097152-4200000]
Kesintiye uğrayan bir yüklemeyi devam ettirme
Yükleme isteği kesintiye uğrarsa veya 200
olmayan bir HTTP durumu alırsanız
ne kadarının başarılı olduğunu öğrenmek için sunucuya sorgu göndererek yüklemenin ne kadarının başarılı olduğunu öğrenin.
Devam ettirilebilir oturum URL'sine yapılan bir POST
isteği. X-Goog-Upload-Command
.
query
olarak ayarlanmalıdır.
POST https://photoslibrary.googleapis.com/v1/uploads?upload_id=AEnB2Urq&upload_protocol=resumable HTTP/1.1 Content-Length: 0 X-Goog-Upload-Command: query
Sunucudan gelen yanıt, bir 200 OK
HTTP durum kodu ve
yüklemenin geçerli boyutunu korur.
HTTP/1.1 200 OK X-Goog-Upload-Status: active X-Goog-Upload-Size-Received: 100
Ardından, yüklemeyi bu uzaklıkta devam ettirebilirsiniz. Ofsetten devam etmeniz gerekir bir birleşik yükleme ve kesinleştirme komutu göndermediğiniz sürece sunucu tarafından sağlanır. Bu durumda, ofseti 0'dan da devam ettirebilirsiniz.
Sorgu komutunuzun HTTP yanıtındaki X-Goog-Upload-Status
üstbilgisi
var ve değer active
değil. Bu, yükleme işleminin
zaten feshedildi.