Halaman ini menjelaskan cara membuat permintaan upload yang dapat dilanjutkan di Street View Publish API. Protokol ini memungkinkan Anda melanjutkan operasi upload setelah kegagalan komunikasi mengganggu aliran data. Gunakan opsi ini jika:
- Anda mengupload file berukuran besar.
- Kemungkinan gangguan jaringan atau beberapa kegagalan transmisi lainnya sangat tinggi (misalnya, jika Anda mengupload file dari aplikasi seluler).
Upload yang dapat dilanjutkan juga dapat mengurangi penggunaan bandwidth saat terjadi kegagalan jaringan, karena Anda tidak perlu memulai ulang upload file besar dari awal.
Jika mengirim file kecil melalui koneksi jaringan yang andal, Anda dapat menggunakan upload sederhana.
Memulai sesi upload yang dapat dilanjutkan
Setelah mendapatkan uploadUrl
, Anda dapat memulai sesi upload
yang dapat dilanjutkan:
- Buat permintaan
POST
keuploadUrl
. Tambahkan header HTTP berikut:
X-Goog-Upload-Protocol
: Tetapkan keresumable
.X-Goog-Upload-Header-Content-Length
: Tetapkan ke jumlah total byte data file, yang akan ditransfer dalam permintaan berikutnya.X-Goog-Upload-Header-Content-Type
: Tetapkan ke jenis MIME data file.X-Goog-Upload-Command
: Tetapkan kestart
.
Kirim permintaan.
Contoh: Memulai sesi upload yang dapat dilanjutkan
Contoh berikut menunjukkan cara memulai sesi yang dapat dilanjutkan untuk mengupload file
baru. Dalam hal ini, file adalah gambar dan jumlah total byte dalam
file adalah 4200000. Perhatikan bahwa isi permintaan kosong; oleh karena itu, header Content-Length
ditetapkan ke 0.
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
Menyimpan URL sesi yang dapat dilanjutkan menjelaskan cara menangani respons untuk permintaan guna memulai sesi upload yang dapat dilanjutkan.
Menyimpan URL sesi yang dapat dilanjutkan
Untuk permintaan yang dikirim untuk memulai sesi upload yang dapat dilanjutkan, server akan
menjawab dengan kode status HTTP 200 OK
, termasuk header berikut:
X-Goog-Upload-URL
: URL unik yang harus digunakan untuk menyelesaikan upload melalui semua permintaan yang tersisa.
Salin dan simpan URL respons yang dapat dilanjutkan sehingga Anda dapat menggunakannya untuk permintaan berikutnya.
Contoh: Menyimpan URL sesi yang dapat dilanjutkan
Contoh berikut menunjukkan respons yang menyertakan URL sesi yang dapat dilanjutkan dan persyaratan perincian ukuran.
HTTP/1.1 200 OK
X-Goog-Upload-URL: https://streetviewpublish.googleapis.com/media/user/123456789/photo/01234?upload_id=AEnB2U&upload_protocol=resumable
Mengupload file
Ada dua cara untuk mengupload file dengan sesi yang dapat dilanjutkan:
- Dalam satu permintaan. Pendekatan ini biasanya merupakan pendekatan terbaik karena memerlukan lebih sedikit permintaan sehingga memiliki performa yang lebih baik.
- Dalam beberapa bagian. Gunakan pendekatan ini jika:
- Anda perlu mengurangi jumlah data yang ditransfer dalam satu permintaan. Anda mungkin perlu melakukannya saat ada batas waktu tetap untuk setiap permintaan.
- Anda harus memberikan indikator yang disesuaikan yang menunjukkan progres upload.
- Anda perlu mengetahui kapan data dapat dihapus dengan aman.
Permintaan Tunggal
Untuk mengupload file dalam satu permintaan:
- Buat permintaan
POST
ke URL sesi yang dapat dilanjutkan. - Tambahkan data file ke isi permintaan.
Tambahkan header HTTP berikut:
Content-Length
: Tetapkan ke jumlah byte dalam file.X-Goog-Upload-Command
: Tetapkan keupload, finalize
.
Kirim permintaan.
Jika permintaan upload terhenti atau Anda menerima respons 5xx
, ikuti
prosedur di Melanjutkan upload yang terhenti.
Beberapa Potongan
Untuk mengupload file dalam beberapa potongan:
- Buat permintaan
POST
ke URL sesi yang dapat dilanjutkan. - Tambahkan data bagian ke isi permintaan. Buat potongan dalam kelipatan 2 MiB (mebibyte), kecuali untuk potongan terakhir yang menyelesaikan upload. Pastikan ukuran potongan sebesar mungkin agar proses upload tetap efisien.
Tambahkan header HTTP berikut:
Content-Length
: Tetapkan ke jumlah byte dalam bagian.X-Goog-Upload-Command
: Tetapkan keupload
. Untuk potongan terakhir, tetapkan keupload, finalize
.X-Goog-Upload-Offset
: Tetapkan ke offset tempat byte harus ditulis. Perhatikan bahwa byte harus diupload secara serial.
Kirim permintaan. Jika permintaan upload terhenti atau Anda menerima respons
5xx
, ikuti prosedur di Melanjutkan upload yang terhenti.Ulangi langkah 1 hingga 4 untuk setiap bagian yang tersisa dalam file.
Contoh: Mengupload file
Permintaan Tunggal
Contoh berikut menunjukkan permintaan yang dapat dilanjutkan untuk mengupload seluruh file JPEG sebesar 4.200.000 byte dalam satu permintaan, menggunakan URL sesi yang dapat dilanjutkan yang diperoleh di langkah sebelumnya:
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]
Jika permintaan berhasil, Anda akan menerima kode status HTTP 200 OK
.
Beberapa Potongan
Contoh berikut menunjukkan permintaan yang dapat dilanjutkan untuk mengupload file JPEG berukuran 4.200.000 byte dalam beberapa bagian, menggunakan URL sesi yang dapat dilanjutkan dan granularitas ukuran yang diperoleh di langkah sebelumnya. Contoh ini menggunakan ukuran potongan sebesar 2097000 byte, yang merupakan kelipatan dari 2 MiB (mebibyte).
Bagian pertama:
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]
Potongan kedua:
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]
Potongan terakhir:
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]
Melanjutkan upload yang terhenti
Jika permintaan upload terhenti atau jika Anda menerima kode status HTTP non-200
, kueri server untuk mengetahui berapa banyak upload yang berhasil:
- Buat permintaan
POST
ke URL sesi yang dapat dilanjutkan. - Tetapkan
X-Goog-Upload-Command
kequery
. - Kirim permintaan.
Server akan merespons dengan kode status HTTP 200 OK
dan ukuran upload saat ini:
HTTP/1.1 200 OK
X-Goog-Upload-Status: active
X-Goog-Upload-Size-Received: 100
Kemudian, Anda dapat melanjutkan upload dengan offset ini. Anda harus melanjutkan dengan offset yang diberikan oleh server, kecuali jika Anda mengirimkan perintah upload dan selesaikan gabungan, yang dalam hal ini Anda juga dapat melanjutkan dengan offset 0.
Jika header X-Goog-Upload-Status
dalam respons HTTP perintah kueri Anda
ada dan nilainya bukan active
, upload telah
dihentikan.