Bu sayfada, Street View Publish API'de nasıl devam ettirilebilir yükleme isteğinde bulunulacağı açıklanmaktadır. Bu protokol, bir iletişim hatası veri akışını kesintiye uğrattığında yükleme işlemini devam ettirmenizi sağlar. Bu seçeneği şu durumlarda kullanın:
- Büyük dosyalar yüklüyorsanız
- Ağ kesintisi veya başka bir aktarım hatası olasılığı yüksektir (ör. mobil uygulamadan dosya yüklüyorsanız).
Devam ettirilebilir yüklemeler, ağda kesinti olduğunda büyük dosya yüklemelerini baştan başlatmanız gerekmediğinden bant genişliği kullanımınızı da azaltabilir.
Küçük dosyaları güvenilir bir ağ bağlantısı üzerinden gönderiyorsanız basit bir yükleme yöntemini kullanabilirsiniz.
Devam ettirilebilir yükleme oturumu başlatma
uploadUrl
aldıktan sonra devam ettirilebilir bir yükleme oturumu başlatabilirsiniz:
uploadUrl
içinPOST
isteği oluşturun.Aşağıdaki HTTP üstbilgilerini ekleyin:
X-Goog-Upload-Protocol
:resumable
olarak ayarlandı.X-Goog-Upload-Header-Content-Length
: Sonraki isteklerde aktarılacak dosya verilerinin toplam bayt sayısına ayarlanır.X-Goog-Upload-Header-Content-Type
: Dosya verilerinin MIME türüne ayarlanır.X-Goog-Upload-Command
:start
olarak ayarlanır.
İsteği gönderin.
Örnek: Devam ettirilebilir yükleme oturumu başlatma
Aşağıdaki örnekte, yeni bir dosya yüklemek için devam ettirilebilir bir oturumun nasıl başlatılacağı gösterilmektedir. Bu durumda dosya bir resimdir ve dosyadaki toplam bayt sayısı 4200000'dir. İsteğin gövdesinin boş olduğunu, bu nedenle Content-Length
başlığının 0 olarak ayarlandığını unutmayın.
POST https://streetviewpublish.googleapis.com/media/user/123456789/photo/01234 HTTP/1.1
Authorization: Bearer [YOUR_AUTH_TOKEN]
Content-Length: 0
X-Goog-Upload-Protocol: resumable
X-Goog-Upload-Header-Content-Length: 4200000
X-Goog-Upload-Header-Content-Type: image/jpeg
X-Goog-Upload-Command: start
Devam ettirilebilir oturum URL'sini kaydetme bölümünde, devam ettirilebilir yükleme oturumunu başlatma isteğinin yanıtının nasıl işlenmesi gerektiği açıklanmaktadır.
Devam ettirilebilir oturum URL'si kaydediliyor
Devam ettirilebilir bir yükleme oturumu başlatmak için gönderilen istek, sunucu tarafından aşağıdaki üstbilgi de dahil olmak üzere 200 OK
HTTP durum koduyla yanıtlanır:
X-Goog-Upload-URL
: Kalan tüm istekler aracılığıyla yüklemeyi tamamlamak için kullanılması gereken benzersiz bir URL.
Devam ettirilebilir yeniden gönderme URL'sini kopyalayıp kaydedin. Böylece sonraki istekler için kullanabilirsiniz.
Örnek: Devam ettirilebilir oturum URL'sini kaydetme
Aşağıdaki örnekte, devam ettirilebilir bir oturum URL'si ve boyut ayrıntı düzeyi şartı içeren bir yanıt gösterilmektedir.
HTTP/1.1 200 OK
X-Goog-Upload-URL: https://streetviewpublish.googleapis.com/media/user/123456789/photo/01234?upload_id=AEnB2U&upload_protocol=resumable
Dosyayı yükleme
Devam ettirilebilir bir oturumla dosya yüklemenin iki yolu vardır:
- Tek bir istekte. Daha az istek gerektirdiği ve dolayısıyla daha iyi performans sağladığı için bu yaklaşım genellikle en iyisidir.
- Birden fazla parça halinde Aşağıdaki durumlarda bu yaklaşımı kullanın:
- Tek bir istekte aktarılan veri miktarını azaltmanız gerekir. Tek tek istekler için sabit bir zaman sınırı olduğunda bunu yapmanız gerekebilir.
- Yükleme ilerlemesini gösteren özelleştirilmiş bir gösterge sağlamanız gerekir.
- Verileri ne zaman silmenin güvenli olduğunu bilmeniz gerekir.
Tek İ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
: Dosyadaki bayt sayısına ayarlanır.X-Goog-Upload-Command
:upload, finalize
olarak ayarlanır.
İsteği gönderin.
Yükleme isteği kesintiye uğrarsa veya 5xx
yanıtı alırsanız Kesintiye uğrayan bir yüklemeyi devam ettirme başlıklı makaledeki prosedürü uygulayın.
Birden fazla büyük 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 hariç, 2 MiB (meb)'nin katları olacak şekilde parçalar oluşturun. Yüklemenin verimli olması için parça boyutunu mümkün olduğunca büyük tutun.
Aşağıdaki HTTP üstbilgilerini ekleyin:
Content-Length
: Parçadaki bayt sayısına ayarlanır.X-Goog-Upload-Command
:upload
olarak ayarlanır. Son parça içinupload, finalize
olarak ayarlayın.X-Goog-Upload-Offset
: Baytların yazılacağı ofset olarak ayarlanır. Baytların seri olarak yüklenmesi gerektiğini unutmayın.
İsteği gönderin. Yükleme isteği kesintiye uğrarsa veya
5xx
yanıtı alırsanız Devam eden bir yüklemeyi devam ettirme başlıklı makaledeki prosedürü uygulayın.Dosyadaki kalan her bir parça için 1 ile 4 arasındaki adımları tekrarlayın.
Örnek: Dosyayı yükleme
Tekli İstek
Aşağıdaki örnekte, önceki adımda elde edilen devam ettirilebilir oturum URL'sini kullanarak 4.200.000 baytlık bir JPEG dosyasının tamamını tek bir istekle yüklemek için devam ettirilebilir bir istek gösterilmektedir:
POST https://streetviewpublish.googleapis.com/media/user/123456789/photo/01234?upload_id=AEnB2U&upload_protocol=resumable HTTP/1.1 Content-Length: 4200000 X-Goog-Upload-Command: upload, finalize X-Goog-Upload-Offset: 0 [BYTES 0-4199999]
İstek başarılı olursa 200 OK
HTTP durum kodu alırsınız.
Birden fazla büyük parça
Aşağıdaki örnekte, devam ettirilebilir oturum URL'si ve önceki adımda elde edilen boyut ayrıntı düzeyi kullanılarak 4.200.000 baytlık bir JPEG dosyasını birden çok parça halinde yüklemek için devam ettirilebilir bir istek gösterilmektedir. Bu örnekte 2097.000 baytlık bir yığın boyutu kullanılmaktadır. Bu, 2 MiB'ın (mebibayt) katlarıdır.
İlk parça:
POST https://streetviewpublish.googleapis.com/media/user/123456789/photo/01234?upload_id=AEnB2U&upload_protocol=resumable HTTP/1.1 Content-Length: 2097000 X-Goog-Upload-Command: upload X-Goog-Upload-Offset: 0[BYTES 0-2096999]
İkinci parça:
POST https://streetviewpublish.googleapis.com/media/user/123456789/photo/01234?upload_id=AEnB2U&upload_protocol=resumable HTTP/1.1 Content-Length: 2097000 X-Goog-Upload-Command: upload X-Goog-Upload-Offset: 2097000[BYTES 2097000-4193999]
Son parça:
POST https://streetviewpublish.googleapis.com/media/user/123456789/photo/01234?upload_id=AEnB2U&upload_protocol=resumable HTTP/1.1 Content-Length: 6000 X-Goog-Upload-Command: upload, finalize X-Goog-Upload-Offset: 4194000[BYTES 4194000-4200000]
Kesintiye uğrayan yüklemeyi devam ettirme
Yükleme isteği kesintiye uğrarsa veya 200
dışında bir HTTP durum kodu alırsanız yüklemenin ne kadarının başarılı olduğunu öğrenmek için sunucuyu sorgulayın:
- Devam ettirilebilir oturum URL'sine bir
POST
isteği oluşturun. X-Goog-Upload-Command
değeriniquery
olarak ayarlayın.- İsteği gönderin.
Sunucu, 200 OK
HTTP durum kodu ve yüklemenin mevcut boyutuyla yanıt verir:
HTTP/1.1 200 OK
X-Goog-Upload-Status: active
X-Goog-Upload-Size-Received: 100
Ardından, bu ofsetten itibaren yüklemeyi devam ettirebilirsiniz. Yükleme ve tamamlama komutunu birlikte göndermediğiniz sürece sunucu tarafından sağlanan ofset değerinden devam etmeniz gerekir. Bu durumda 0 ofsetinden de devam edebilirsiniz.
Sorgu komutunuzun HTTP yanıtında X-Goog-Upload-Status
başlığı mevcutsa ve değer active
değilse yükleme zaten sonlandırılmıştır.