Bu sayfada, Street View Publish API'de devam ettirilebilir yükleme isteğinin nasıl yapılacağı açıklanmaktadır. Bu protokol, bir iletişim hatası veri akışını kesintiye uğrattıktan sonra yükleme işlemini devam ettirmenize olanak tanır. Bu seçeneği aşağıdaki durumlarda kullanın:
- Büyük dosyalar yüklüyorsunuz.
- Ağ kesintisi veya başka bir iletim hatası olasılığı yüksektir (örneğin, mobil uygulamadan dosya yüklüyorsanız).
Devam ettirilebilir yüklemeler, büyük dosya yüklemelerini baştan baştan yeniden başlatmak zorunda kalmadığınızdan, ağ hatası olduğunda 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 yükleme seçeneğini kullanabilirsiniz.
Devam ettirilebilir yükleme oturumu başlatma
uploadUrl
edindikten sonra, devam ettirilebilir bir yükleme oturumu başlatabilirsiniz:
uploadUrl
için birPOST
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ını belirtir.X-Goog-Upload-Header-Content-Type
: Dosya verilerinin MIME türüne ayarlanır.X-Goog-Upload-Command
:start
olarak ayarlandı.
İsteği gönderin.
Örnek: Devam ettirilebilir yükleme oturumu başlatma
Aşağıdaki örnekte, yeni 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ı 4.200.000'dur. İsteğin gövdesinin boş olduğunu ve 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'sinin kaydedilmesi, devam ettirilebilir yükleme oturumunu başlatma isteğine verilen yanıtın nasıl ele alınacağını açıklar.
Devam ettirilebilir oturum URL'si kaydediliyor
Devam ettirilebilir bir yükleme oturumu başlatmak için gönderilen istek için sunucu, aşağıdaki başlık da dahil olmak üzere bir 200 OK
HTTP durum koduyla yanıt verir:
X-Goog-Upload-URL
: Kalan tüm istekler üzerinden yükleme işlemini tamamlamak için kullanılması gereken benzersiz bir URL.
Sonraki isteklerde kullanabilmek için devam ettirilebilir konum URL'sini kopyalayıp kaydedin.
Örnek: Devam ettirilebilir oturum URL'sini kaydetme
Aşağıdaki örnekte, devam ettirilebilir bir oturum URL'si ve boyut ayrıntı düzeyi gereksinimi 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
Dosya yükleniyor
Devam ettirilebilir oturumu olan bir dosyayı iki şekilde yükleyebilirsiniz:
- Tek bir istekte. Daha az istek gerektirdiği ve böylece daha iyi performans gösterdiği için bu yaklaşım genellikle en iyi seçenektir.
- Birden çok parça halinde. Bu yaklaşımı aşağıdaki durumlarda kullanın:
- Herhangi bir tek istekte aktarılan veri miktarını azaltmanız gerekir. Tek tek istekler için sabit bir süre sınırı olduğunda bunu yapmanız gerekebilir.
- Yükleme işleminin ilerleme durumunu gösteren özelleştirilmiş bir gösterge sağlamanız gerekir.
- Verileri silmenin ne zaman güvenli olduğunu bilmeniz gerekir.
Tek İstek
Dosyayı tek bir istekte yüklemek için:
- Devam ettirilebilir oturum URL'si için bir
POST
isteği oluşturun. - Dosya verilerini istek gövdesine ekleyin.
Aşağıdaki HTTP üstbilgilerini ekleyin:
Content-Length
: Dosyadaki bayt sayısına ayarlayın.X-Goog-Upload-Command
:upload, finalize
olarak ayarlandı.
İsteği gönderin.
Yükleme isteği kesintiye uğrarsa veya 5xx
yanıtı alırsanız Kesilen bir yüklemeyi devam ettirme bölümündeki prosedürü uygulayın.
Birden Fazla Parça
Dosyayı birden fazla parça halinde yüklemek için:
- Devam ettirilebilir oturum URL'si için bir
POST
isteği oluşturun. - Parçanın verilerini istek gövdesine ekleyin. Yüklemeyi tamamlayan son parça hariç, 2 MiB'ın (mebibayt) katları halinde parçalar oluşturun. Yüklemenin verimli olması için yığın boyutunu mümkün olduğunca büyük tutun.
Aşağıdaki HTTP üstbilgilerini ekleyin:
Content-Length
: Yığındaki bayt sayısına ayarlanır.X-Goog-Upload-Command
:upload
olarak ayarlandı. Son yığın içinupload, finalize
olarak ayarlayın.X-Goog-Upload-Offset
: Baytların yazılması gereken 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 bir
5xx
yanıtı alırsanız Kesintili bir yüklemeyi devam ettirme bölümündeki prosedürü uygulayın.Dosyadaki her kalan parça için 1 ile 4 arasındaki adımları tekrarlayın.
Örnek: Dosyayı yükleme
Tek İstek
Aşağıdaki örnekte, önceki adımda elde edilen devam ettirilebilir oturum URL'si kullanılarak, 4.200.000 baytlık bir JPEG dosyasının tamamını tek bir istekte yüklemeyle ilgili 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 Parça
Aşağıdaki örnekte, devam ettirilebilir oturum URL'si ve önceki adımda elde edilen boyut ayrıntısı kullanılarak 4.200.000 baytlık bir JPEG dosyasını birden fazla parça halinde yüklemek için devam ettirilebilir bir istek gösterilmektedir. Bu örnekte, 2 MiB'ın (mebibayt) katı olan 2.097.000 baytlık bir yığın boyutu kullanılmıştır.
İlk grup:
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 grup:
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]
Kesilen bir yüklemeyi devam ettirme
Yükleme isteği kesintiye uğrarsa veya 200
olmayan 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'si için bir
POST
isteği oluşturun. X-Goog-Upload-Command
cihazınıquery
ayarlayın.- İsteği gönderin.
Sunucu, 200 OK
HTTP durum kodu ve yüklemenin geçerli boyutuyla yanıt verir:
HTTP/1.1 200 OK
X-Goog-Upload-Status: active
X-Goog-Upload-Size-Received: 100
Daha sonra, yükleme işlemine bu ofset düzeyinde devam edebilirsiniz. Birleşik bir yükleme ve sonlandırma komutu göndermediğiniz sürece sunucu tarafından sağlanan ofsette devam etmeniz gerekir. Bu durumda, ofset 0'dan devam edebilirsiniz.
Sorgu komutunuzun HTTP yanıtında X-Goog-Upload-Status
başlığı varsa ve değer active
değilse yükleme zaten sonlandırılmıştır.