Google Drive API memungkinkan Anda mengupload data file saat membuat atau memperbarui
File
. Untuk mengetahui informasi tentang cara membuat
File
khusus metadata, lihat Membuat file.
Ada 3 jenis upload yang dapat Anda lakukan:
Upload sederhana (
uploadType=media
)—Gunakan jenis upload ini untuk mentransfer file media kecil (5 MB atau kurang) tanpa memberikan metadata. Untuk melakukan upload sederhana, lihat Melakukan upload sederhana.Upload multibagian (
uploadType=multipart
)—Gunakan jenis upload ini untuk mentransfer file kecil (5 MB atau kurang) beserta metadata yang mendeskripsikan file, dalam satu permintaan. Untuk melakukan upload multibagian, lihat Melakukan upload multibagian.Upload yang dapat dilanjutkan (
uploadType=resumable
)—Gunakan jenis upload ini untuk file besar (lebih dari 5 MB) dan saat ada kemungkinan besar gangguan jaringan, seperti saat membuat file dari aplikasi seluler. Upload yang dapat dilanjutkan juga merupakan pilihan tepat untuk sebagian besar aplikasi karena juga dapat digunakan untuk file kecil dengan biaya minimal satu permintaan HTTP tambahan per upload. Untuk melakukan upload yang dapat dilanjutkan, lihat Melakukan upload yang dapat dilanjutkan.
Library klien Google API mengimplementasikan setidaknya salah satu jenis upload ini. Lihat dokumentasi library klien untuk detail tambahan tentang cara menggunakan setiap jenis tersebut.
Gunakan PATCH
vs. PUT
Sebagai pengingat, kata kerja HTTP PATCH
mendukung pembaruan resource file parsial,
sedangkan kata kerja HTTP PUT
mendukung penggantian resource penuh. Perlu diperhatikan bahwa PUT
dapat menyebabkan perubahan yang dapat menyebabkan gangguan saat menambahkan kolom baru ke resource yang ada.
Saat mengupload resource file, gunakan panduan berikut:
- Gunakan kata kerja HTTP yang didokumentasikan pada referensi API untuk permintaan awal upload yang dapat dilanjutkan, atau untuk satu-satunya permintaan upload sederhana atau multibagian.
- Gunakan
PUT
untuk semua permintaan berikutnya untuk upload yang dapat dilanjutkan setelah permintaan dimulai. Permintaan ini mengupload konten, apa pun metode yang dipanggil.
Melakukan upload sederhana
Untuk melakukan upload sederhana, gunakan
metode files.create dengan uploadType=media
.
Berikut ini cara melakukan upload sederhana:
HTTP
Buat permintaan
POST
ke URI /upload metode dengan parameter kueriuploadType=media
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=media
Tambahkan data file ke isi permintaan.
Tambahkan header HTTP ini:
Content-Type
. Setel ke jenis media MIME objek yang diupload.Content-Length
. Setel ke jumlah byte yang Anda upload. Jika Anda menggunakan potongan encoding transfer, header ini tidak diperlukan.
Kirim permintaan. Jika permintaan berhasil, server akan menampilkan kode status
HTTP 200 OK
beserta metadata file. {HTTP}
Saat Anda melakukan upload sederhana, metadata dasar akan dibuat dan beberapa atribut
akan disimpulkan dari file tersebut, seperti jenis MIME atau modifiedTime
. Anda dapat menggunakan
upload sederhana jika Anda memiliki file kecil dan metadata file tidak
penting.
Melakukan upload multibagian
Permintaan upload multibagian memungkinkan Anda mengupload metadata dan data dalam permintaan yang sama. Gunakan opsi ini jika data yang Anda kirim cukup kecil untuk diupload lagi, secara keseluruhan, jika koneksi gagal.
Untuk melakukan upload multibagian, gunakan
metode files.create dengan
uploadType=multipart
.
Berikut ini cara melakukan upload multibagian:
Java
Python
Node.js
PHP
.NET
HTTP
Buat permintaan
POST
ke URI /upload metode dengan parameter kueriuploadType=multipart
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart
Buat isi permintaan. Format isi sesuai dengan jenis konten multibagian/terkait [RFC 2387], yang berisi 2 bagian:
- Metadata. Metadata harus didahulukan dan harus memiliki header
Content-Type
yang ditetapkan keapplication/json;
charset=UTF-8
. Tambahkan metadata file dalam format JSON. - Media. Media harus ada di urutan kedua dan harus memiliki header
Content-Type
dengan jenis MIME apa pun. Tambahkan data file ke bagian media.
Identifikasi setiap bagian dengan string batas, yang diawali dengan 2 tanda hubung. Selain itu, tambahkan 2 tanda hubung setelah string batas akhir.
- Metadata. Metadata harus didahulukan dan harus memiliki header
Tambahkan header HTTP tingkat atas ini:
Content-Type
. Tetapkan kemultipart/related
dan sertakan string batas yang Anda gunakan untuk mengidentifikasi berbagai bagian permintaan. Contoh:Content-Type: multipart/related; boundary=foo_bar_baz
Content-Length
. Setel ke jumlah total byte dalam isi permintaan.
Kirim permintaan.
Untuk membuat atau memperbarui bagian metadata saja, tanpa data terkait,
kirim permintaan POST
atau PATCH
ke endpoint resource standar:
https://www.googleapis.com/drive/v3/files
Jika permintaan berhasil,
server akan menampilkan kode status HTTP 200 OK
beserta metadata
file.
Saat membuat file, sebaiknya mereka menentukan ekstensi file di kolom name
file tersebut. Misalnya, saat membuat file JPEG foto, Anda dapat menetapkan sesuatu seperti "name": "photo.jpg"
dalam metadata. Panggilan berikutnya ke files.get akan menampilkan properti fileExtension
hanya baca yang berisi ekstensi yang awalnya ditentukan di kolom name
.
Melakukan upload yang dapat dilanjutkan
Upload yang dapat dilanjutkan memungkinkan Anda melanjutkan operasi upload setelah kegagalan komunikasi mengganggu aliran data. Karena Anda tidak perlu memulai ulang upload file berukuran besar sejak awal, upload yang dapat dilanjutkan juga dapat mengurangi penggunaan bandwidth jika terjadi kegagalan jaringan.
Upload yang dapat dilanjutkan berguna saat ukuran file Anda mungkin sangat bervariasi atau jika ada batas waktu tetap untuk permintaan (seperti tugas latar belakang OS seluler dan permintaan App Engine tertentu). Anda juga dapat menggunakan upload yang dapat dilanjutkan jika ingin menampilkan status progres upload.
Upload yang dapat dilanjutkan terdiri dari beberapa langkah tingkat tinggi:
- Kirim permintaan awal dan ambil URI sesi yang dapat dilanjutkan.
- Mengupload data dan memantau status upload.
- (opsional) Jika upload mengalami gangguan, lanjutkan upload.
Mengirim permintaan awal
Untuk memulai upload yang dapat dilanjutkan, gunakan
metode files.create dengan
uploadType=resumable
.
HTTP
Buat permintaan
POST
ke URI /upload metode dengan parameter kueriuploadType=resumable
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable
Jika permintaan inisiasi berhasil, respons akan menyertakan kode status HTTP
200 OK
. Selain itu, kode ini menyertakan headerLocation
yang menentukan URI sesi yang dapat dilanjutkan:HTTP/1.1 200 OK Location: https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable&upload_id=xa298sd_sdlkj2 Content-Length: 0
Simpan URI sesi yang dapat dilanjutkan agar Anda dapat mengupload data file dan mengkueri status upload. URI sesi yang dapat dilanjutkan akan berakhir setelah satu minggu.
Jika Anda memiliki metadata untuk file tersebut, tambahkan metadata ke isi permintaan dalam format JSON. Jika tidak, kosongkan isi permintaan.
Tambahkan header HTTP ini:
X-Upload-Content-Type
. Opsional. Tetapkan ke jenis MIME data file, yang ditransfer dalam permintaan berikutnya. Jika jenis MIME data tidak ditentukan dalam metadata atau melalui header ini, objek akan ditayangkan sebagaiapplication/octet-stream.
X-Upload-Content-Length
. Opsional. Tetapkan ke jumlah byte data file, yang ditransfer dalam permintaan berikutnya.Content-Type
. Wajib diisi jika Anda memiliki metadata untuk file. Tetapkan keapplication/json;
charset=UTF-8
.Content-Length
. Wajib, kecuali jika Anda menggunakan potongan encoding transfer. Setel ke jumlah byte dalam isi permintaan awal ini.
Kirim permintaan. Jika permintaan untuk memulai sesi berhasil, respons akan menyertakan kode status
200 OK HTTP
. Selain itu, respons menyertakan headerLocation
yang menentukan URI sesi yang dapat dilanjutkan. Gunakan URI sesi yang dapat dilanjutkan untuk mengupload data file dan membuat kueri status upload. URI sesi yang dapat dilanjutkan akan berakhir setelah satu minggu.Salin dan simpan URL sesi yang dapat dilanjutkan.
Lanjutkan ke Mengupload konten.
Mengupload konten
Ada 2 cara untuk mengupload file dengan sesi yang dapat dilanjutkan:
- Upload konten dalam satu permintaan—Gunakan pendekatan ini saat file dapat diupload dalam satu permintaan, jika tidak ada batas waktu tetap untuk satu permintaan apa pun, atau Anda tidak perlu menampilkan indikator progres upload. Pendekatan ini adalah pendekatan terbaik karena memerlukan lebih sedikit permintaan dan menghasilkan performa yang lebih baik.
Upload konten dalam beberapa bagian—Gunakan pendekatan ini jika Anda harus mengurangi jumlah data yang ditransfer dalam satu permintaan. Anda mungkin perlu mengurangi data yang ditransfer saat ada batas waktu tetap untuk setiap permintaan, seperti yang dapat terjadi untuk class permintaan App Engine tertentu. Pendekatan ini juga berguna jika Anda harus memberikan indikator yang disesuaikan untuk menampilkan progres upload.
HTTP - permintaan tunggal
- Buat permintaan
PUT
ke URI sesi yang dapat dilanjutkan. - Tambahkan data file ke isi permintaan.
- Tambahkan header HTTP Panjang Konten, yang ditetapkan ke jumlah byte dalam file.
- Kirim permintaan. Jika permintaan upload terhenti, atau jika Anda menerima respons
5xx
, ikuti prosedur di Melanjutkan upload yang terhenti.
HTTP - beberapa permintaan
Buat permintaan
PUT
ke URI sesi yang dapat dilanjutkan.Tambahkan data potongan ke isi permintaan. Buat potongan dalam kelipatan 256 KB (256 x 1024 byte), kecuali untuk potongan terakhir yang menyelesaikan proses upload. Pertahankan ukuran potongan sebesar mungkin agar proses upload efisien.
Tambahkan header HTTP ini:
Content-Length
. Setel ke jumlah byte dalam potongan saat ini.Content-Range
. Setel untuk menampilkan byte mana dalam file yang Anda upload. Misalnya,Content-Range: bytes 0-524287/2000000
menunjukkan bahwa Anda mengupload 524.288 byte pertama (256 x 1024 x 2) dalam file 2.000.000 byte.
Kirim permintaan, dan proses respons. Jika permintaan upload terganggu, atau jika Anda menerima respons
5xx
, ikuti prosedur di Melanjutkan upload yang terhenti.Ulangi langkah 1 sampai 4 untuk setiap potongan yang tersisa dalam {i>file<i}. Gunakan header
Range
dalam respons untuk menentukan tempat memulai potongan berikutnya. Jangan berasumsi bahwa server menerima semua byte yang dikirim dalam permintaan sebelumnya.
Setelah seluruh upload file selesai, Anda akan menerima respons 200 OK
atau
201 Created
, beserta metadata apa pun yang terkait dengan resource.
Melanjutkan upload yang terhenti
Jika permintaan upload dihentikan sebelum respons, atau jika Anda menerima respons 503 Service Unavailable
, Anda harus melanjutkan upload yang terhenti.
HTTP
Untuk meminta status upload, buat permintaan
PUT
kosong ke URI sesi yang dapat dilanjutkan.Tambahkan header
Content-Range
untuk menunjukkan bahwa posisi saat ini pada file tidak diketahui. Misalnya, setelContent-Range
ke*/2000000
jika total panjang file adalah 2.000.000 byte. Jika Anda tidak mengetahui ukuran penuh file, setelContent-Range
ke*/*
.Kirim permintaan.
Proses respons:
- Respons
200 OK
atau201 Created
menunjukkan bahwa upload selesai, dan tidak perlu melakukan tindakan lebih lanjut. - Respons
308 Resume Incomplete
menunjukkan bahwa Anda harus melanjutkan untuk mengupload file. - Respons
404 Not Found
menunjukkan bahwa sesi upload telah berakhir dan upload harus dimulai ulang dari awal.
- Respons
Jika Anda menerima respons
308 Resume Incomplete
, proses headerRange
respons untuk menentukan byte yang telah diterima server. Jika respons tidak memiliki headerRange
, berarti tidak ada byte yang diterima. Misalnya, headerRange
daribytes=0-42
menunjukkan bahwa 43 byte pertama file telah diterima dan potongan berikutnya yang diupload akan dimulai dengan byte 44.Setelah Anda mengetahui tempat untuk melanjutkan upload, lanjutkan mengupload file yang dimulai dengan byte berikutnya. Sertakan header
Content-Range
untuk menunjukkan bagian file mana yang Anda kirim. Misalnya,Content-Range: bytes 43-1999999
menunjukkan bahwa Anda mengirim byte 44 hingga 2.000.000.
Menangani error upload media
Saat Anda mengupload media, ikuti praktik terbaik berikut untuk menangani error:
- Untuk error
5xx
, lanjutkan atau coba lagi upload yang gagal karena gangguan koneksi. Untuk informasi lebih lanjut tentang cara menangani error5xx
, lihat Mengatasi error5xx
. - Untuk
403 rate limit
error, coba upload lagi. Untuk mengetahui informasi selengkapnya tentang cara menangani error403 rate limit
, lihat Menyelesaikan403 error: Rate limit exceeded
. - Untuk error
4xx
apa pun (termasuk403
) selama upload yang dapat dilanjutkan, mulai ulang upload. Error ini menunjukkan bahwa sesi upload telah berakhir dan harus dimulai ulang dengan meminta URI sesi baru. Sesi upload juga akan berakhir setelah tidak aktif selama satu minggu.
Impor ke jenis Google Dokumen
Saat membuat file di Drive, Anda dapat mengonversi file menjadi jenis file Google Workspace, seperti Google Dokumen atau Google Sheet. Misalnya, mungkin Anda ingin mengonversi dokumen dari pemroses kata favorit Anda ke Google Dokumen untuk memanfaatkan fitur-fiturnya.
Untuk mengonversi file ke jenis file Google Workspace tertentu, tentukan
mimeType
Google Workspace saat membuat file.
Berikut ini cara mengonversi file CSV menjadi sheet Google Workspace:
Java
Python
Node.js
PHP
.NET
Untuk melihat apakah konversi tersedia, periksa array importFormats
resource About sebelum membuat file. Konversi yang didukung tersedia secara dinamis dalam array ini. Beberapa format impor yang umum adalah:
From | Menjadi |
---|---|
Microsoft Word, Teks OpenDocument, HTML, RTF, teks biasa | Google Dokumen |
Microsoft Excel, Spreadsheet OpenDocument, CSV, TSV, teks biasa | Google Spreadsheet |
Microsoft PowerPoint, Presentasi OpenDocument | Google Slide |
JPEG, PNG, GIF, BMP, PDF | Google Dokumen (menyematkan gambar di Dokumen) |
Teks biasa (jenis MIME khusus), JSON | Google Apps Script |
Saat Anda mengupload dan mengonversi media selama permintaan update
ke Dokumen, Spreadsheet, atau
Slide, konten lengkap dokumen akan diganti.
Saat Anda mengonversi gambar ke Dokumen, Drive menggunakan Pengenalan Karakter Optik
(OCR) untuk mengonversi gambar menjadi teks. Anda dapat meningkatkan kualitas algoritma
OCR dengan menentukan kode bahasa
BCP 47
yang berlaku dalam
parameter ocrLanguage
.
Teks yang diekstrak akan muncul di Dokumen bersama gambar yang disematkan.
Gunakan ID yang telah dibuat sebelumnya untuk mengupload file
Drive API memungkinkan Anda mengambil daftar ID file yang telah dibuat sebelumnya, yang digunakan untuk mengupload dan membuat resource. Permintaan upload dan pembuatan file dapat menggunakan ID yang telah dibuat sebelumnya ini. Tetapkan kolom id
dalam metadata file.
Untuk membuat ID yang telah dibuat sebelumnya, panggil file.generateIds dengan jumlah ID yang akan dibuat.
Anda dapat mencoba lagi upload dengan ID yang sudah dibuat secara aman jika terjadi error server yang tidak tentu atau waktu tunggu habis. Jika file berhasil dibuat, percobaan ulang berikutnya
akan menampilkan error HTTP 409
dan tidak akan membuat file
duplikat.
Menentukan teks yang dapat diindeks untuk jenis file yang tidak diketahui
Pengguna dapat menggunakan UI Drive untuk menelusuri konten dokumen. Anda juga dapat menggunakan
files.list dan kolom fullText
untuk menelusuri
konten dari aplikasi. Untuk mengetahui informasi selengkapnya, lihat
Menelusuri file dan folder.
Drive akan otomatis mengindeks dokumen untuk penelusuran saat mengenali jenis file, termasuk dokumen teks, PDF, gambar berisi teks, dan jenis umum lainnya. Jika aplikasi Anda menyimpan jenis file lain (seperti gambar, video, dan
pintasan), Anda dapat meningkatkan visibilitas dengan menyediakan teks yang dapat diindeks dalam
kolom contentHints.indexableText
file.
Untuk mengetahui informasi selengkapnya tentang teks yang dapat diindeks, lihat Mengelola metadata file.