Google Drive API mendukung beberapa jenis tindakan download dan ekspor, seperti yang tercantum dalam tabel berikut:
| Tindakan download |
|
||||
| Tindakan ekspor |
|
Di Drive API, file blob merujuk ke file biner mentah apa pun yang disimpan di Google Drive (seperti gambar, video, dan PDF) dan bukan dokumen Google Workspace. Objek ini tidak merujuk pada objek
Blob JavaScript. Untuk
deskripsi mendetail tentang jenis file yang disebutkan di sini, termasuk file blob dan
Google Workspace, lihat Jenis
file.
Sebelum mendownload atau mengekspor konten file, verifikasi bahwa pengguna dapat mendownload file menggunakan kolom
capabilities.canDownload
di resource files.
Bagian selanjutnya dari dokumen ini memberikan petunjuk mendetail untuk melakukan jenis tindakan download dan ekspor ini.
Mendownload konten file blob
Untuk mendownload file blob yang disimpan di Drive, gunakan metode files.get dengan ID file yang akan didownload dan parameter
alt sistem.
Parameter alt=media memberi tahu server bahwa download konten sedang
diminta sebagai format respons alternatif.
Parameter sistem alt tersedia di semua Google REST API. Jika menggunakan
library klien Drive API, Anda tidak perlu menetapkan parameter ini secara eksplisit
karena metode library klien menambahkan parameter alt=media ke
permintaan HTTP yang mendasarinya.
Contoh kode berikut menunjukkan cara menggunakan metode files.get untuk mendownload file:
Apps Script
/**
* Downloads a file from Drive.
* @param {string} fileId The ID of the file to download.
* @return {Blob} The file content as a Blob.
*/
function downloadFile(fileId) {
var url = 'https://www.googleapis.com/drive/v3/files/' + fileId + '?alt=media';
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
}
});
return response.getBlob();
}
Java
Python
Node.js
PHP
.NET
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID?alt=media" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME"
Ganti kode berikut:
- FILE_ID: ID file yang akan didownload.
- ACCESS_TOKEN: token akses yang memberikan akses ke API.
- FILE_NAME: nama file output.
Download file yang dimulai dari aplikasi Anda harus diotorisasi dengan cakupan yang memungkinkan akses baca ke konten file. Misalnya, aplikasi yang menggunakan cakupan
drive.readonly.metadata tidak diizinkan untuk mendownload konten file.
Contoh kode library klien menggunakan cakupan file drive terbatas yang memungkinkan pengguna melihat dan mengelola semua file Drive Anda. Untuk mempelajari lebih lanjut cakupan Drive, lihat Memilih cakupan Google Drive API.
Pengguna dengan izin owner (untuk file Drive Saya) atau
izin organizer (untuk file drive bersama) dapat membatasi download
melalui objek
DownloadRestrictionsMetadata. Untuk mengetahui informasi selengkapnya, lihat Mencegah pengguna mendownload, mencetak, atau menyalin file Anda.
File yang diidentifikasi sebagai melanggar
(seperti software berbahaya) hanya dapat didownload oleh pemilik file.
Selain itu, parameter kueri acknowledgeAbuse harus disetel ke true untuk
menunjukkan bahwa pengguna telah mengetahui risiko mendownload software yang berpotensi
tidak diinginkan atau file berbahaya lainnya. Aplikasi Anda harus memperingatkan pengguna secara interaktif sebelum menggunakan parameter kueri ini.
Mengakses data file dalam memori
Jika aplikasi Anda harus mengakses data file secara langsung dalam memori (misalnya, sebagai buffer byte) daripada menyimpannya ke disk lokal, Anda dapat menyesuaikan permintaan library klien atau memproses aliran yang ditampilkan:
Node.js: Secara default, library klien Node.js menampilkan konten file sebagai aliran
Readable. Untuk menyimpan file ke disk lokal:const fs = require('fs'); const dest = fs.createWriteStream('/path/to/dest/file.ext'); const response = await service.files.get( { fileId, alt: 'media' }, { responseType: 'stream' } ); response.data .on('end', () => { console.log('Download complete.'); }) .on('error', (err) => { console.error('Error downloading file.', err); }) .pipe(dest);Atau, untuk menampilkan data secara langsung dalam memori sebagai
ArrayBufferbukan sebagai aliran, tetapkan parameterresponseTypedalam opsi permintaan Anda:const file = await service.files.get({ fileId, alt: 'media', }, { responseType: 'arraybuffer' }); // Convert the ArrayBuffer to a Node.js Buffer object. const buffer = Buffer.from(file.data);Python: Contoh kode Python untuk mendownload file blob sudah menulis potongan download ke objek
io.BytesIO()dalam memori. Untuk mengakses byte mentah, panggilfile.getvalue().Java: Contoh kode Java untuk mendownload file blob menggunakan
java.io.ByteArrayOutputStreamuntuk merekam byte yang didownload dalam memori. GunakanoutputStream.toByteArray()untuk mengakses array byte mentah..NET: Contoh kode C# untuk mendownload file blob menggunakan
System.IO.MemoryStream. Gunakanstream.ToArray()untuk mengakses array byte yang mendasarinya.Apps Script: Contoh kode Apps Script untuk mendownload file blob menggunakan metode
response.getBlob()untuk menampilkan objekBlob. Konversikan ini menjadi array byte menggunakan metodegetBytes().
Download sebagian
Download sebagian melibatkan download hanya sebagian file yang ditentukan. Anda
dapat menentukan bagian file yang ingin didownload menggunakan rentang
byte dengan header
Range. Contoh:
Range: bytes=500-999
Mendownload konten file blob pada versi sebelumnya
Untuk mendownload konten file blob pada versi sebelumnya, gunakan metode
revisions.get dengan ID file yang akan didownload, ID revisi, dan alt parameter
sistem.
Parameter alt=media memberi tahu server bahwa download konten sedang
diminta sebagai format respons alternatif. Mirip dengan files.get, metode
revisions.get juga menerima parameter kueri acknowledgeAbuse dan
header Range.
Anda hanya dapat mendownload revisi konten file blob yang ditandai sebagai "Simpan Selamanya". Jika Anda ingin mendownload revisi, tetapkan revisi tersebut ke "Simpan Selamanya" terlebih dahulu. Untuk mengetahui informasi selengkapnya, lihat Menentukan revisi yang akan disimpan dari penghapusan otomatis.
Untuk informasi tambahan tentang cara mendownload revisi, lihat Mengelola operasi yang berjalan lama.
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/revisions/REVISION_ID?alt=media" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME"
Ganti kode berikut:
- FILE_ID: ID file yang akan didownload.
- REVISION_ID: ID revisi yang akan didownload.
- ACCESS_TOKEN: token akses yang memberikan akses ke API.
- FILE_NAME: nama file output.
Mendownload konten file blob di browser
Untuk mendownload konten file blob yang disimpan di Drive dalam browser, bukan melalui API, gunakan kolom webContentLink dari resource files. Jika pengguna memiliki akses download ke file, link untuk mendownload file dan isinya akan ditampilkan. Anda dapat mengalihkan pengguna ke URL ini, atau menawarkannya sebagai link yang dapat diklik.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=webContentLink" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
Ganti kode berikut:
- FILE_ID: ID file untuk mendapatkan link download.
- ACCESS_TOKEN: token akses yang memberikan akses ke API.
Mendownload konten file blob menggunakan operasi yang berjalan lama
Untuk mendownload konten file blob menggunakan operasi yang berjalan lama (LRO), gunakan
metode files.download dengan ID
file yang akan didownload. Anda dapat menetapkan ID revisi secara opsional.
Ini adalah satu-satunya cara untuk mendownload file Google Vids. Jika Anda mencoba mengekspor file Google Vids, Anda akan menerima error fileNotExportable.
Untuk mengetahui informasi selengkapnya, lihat Mengelola operasi yang berjalan lama.
curl
Perintah curl berikut memulai LRO dan menampilkan respons JSON. Untuk mendownload file atau melakukan polling LRO ini, Anda harus membuat permintaan lain menggunakan ID yang ditampilkan untuk mendapatkan URL konten. Kemudian, Anda dapat membuat permintaan curl akhir ke URL tersebut untuk mendownload file. Untuk mengetahui informasi selengkapnya, lihat Mengelola operasi yang berjalan lama.
curl --request POST "https://www.googleapis.com/drive/v3/files/FILE_ID/download?mimeType=video/mp4" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Length: 0" \
--header "Accept: application/json"
Ganti kode berikut:
- FILE_ID: ID file yang akan didownload.
- ACCESS_TOKEN: token akses yang memberikan akses ke API.
Mengekspor konten dokumen Google Workspace
Untuk mengekspor konten byte dokumen Google Workspace, gunakan metode files.export dengan ID file yang akan diekspor dan jenis MIME yang benar. Konten yang diekspor dibatasi hingga 10 MB.
Contoh kode berikut menunjukkan cara menggunakan metode files.export untuk mengekspor dokumen Google Workspace dalam format PDF:
Apps Script
/**
* Exports a Google Workspace document.
* @param {string} fileId The ID of the file to export.
* @param {string} mimeType The MIME type to export to.
* @return {Blob} The exported content as a Blob.
*/
function exportPdf(fileId, mimeType) {
var url = 'https://www.googleapis.com/drive/v3/files/' + fileId + '/export?mimeType=' + encodeURIComponent(mimeType);
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
}
});
return response.getBlob();
}
Java
Python
Node.js
PHP
.NET
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/export?mimeType=application/pdf" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME.pdf"
Ganti kode berikut:
- FILE_ID: ID file yang akan didownload.
- ACCESS_TOKEN: token akses yang memberikan akses ke API.
- FILE_NAME: nama file output.
Contoh kode library klien menggunakan cakupan drive yang dibatasi yang memungkinkan pengguna melihat dan mengelola semua file Drive Anda. Untuk mempelajari lebih lanjut cakupan Drive, lihat Memilih cakupan Google Drive API.
Contoh kode juga mendeklarasikan jenis MIME ekspor sebagai application/pdf. Untuk
daftar lengkap semua jenis MIME ekspor yang didukung untuk setiap dokumen Google Workspace, lihat Jenis MIME ekspor untuk dokumen Google Workspace.
Mengekspor konten dokumen Google Workspace di browser
Untuk mengekspor konten dokumen Google Workspace dalam browser, gunakan kolom
exportLinks dari resource
files. Bergantung pada jenis dokumen, link untuk mendownload file dan isinya akan ditampilkan untuk setiap jenis MIME yang tersedia. Anda dapat mengalihkan pengguna ke URL, atau menawarkannya sebagai link yang dapat diklik.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=id,name,exportLinks" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
Ganti kode berikut:
- FILE_ID: ID file untuk mendapatkan link download.
- ACCESS_TOKEN: token akses yang memberikan akses ke API.
Mengekspor konten dokumen Google Workspace pada versi sebelumnya di browser
Untuk mengekspor konten dokumen Google Workspace dalam versi sebelumnya di dalam browser, gunakan metode revisions.get dengan ID file yang akan didownload dan ID revisi untuk membuat link ekspor yang dapat Anda gunakan untuk mendownload. Jika pengguna memiliki akses download ke
file, link untuk mendownload file dan isinya akan ditampilkan. Anda dapat
mengarahkan pengguna ke URL ini, atau menawarkannya sebagai link yang dapat diklik.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID/revisions/REVISION_ID?fields=id,name,exportLinks" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
Ganti kode berikut:
- FILE_ID: ID file yang akan didownload.
- REVISION_ID: ID revisi yang akan didownload.
- ACCESS_TOKEN: token akses yang memberikan akses ke API.
Mengekspor konten dokumen Google Workspace menggunakan operasi yang berjalan lama
Untuk mengekspor konten dokumen Google Workspace menggunakan operasi yang berjalan lama (LRO), gunakan metode files.download dengan ID file yang akan didownload dan ID revisi. Untuk mengetahui informasi selengkapnya,
lihat Mengelola operasi yang berjalan lama.
curl
Perintah curl berikut memulai LRO dan menampilkan respons JSON. Untuk mendownload file atau melakukan polling LRO ini, Anda harus membuat permintaan lain menggunakan ID yang ditampilkan untuk mendapatkan URL konten. Kemudian, Anda dapat membuat permintaan curl akhir ke URL tersebut untuk mendownload file. Untuk mengetahui informasi selengkapnya, lihat Mengelola operasi yang berjalan lama.
curl --request POST "https://www.googleapis.com/drive/v3/files/FILE_ID/download?mimeType=MIME_TYPE&revisionId=REVISION_ID" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Length: 0" \
--header "Accept: application/json"
Ganti kode berikut:
- FILE_ID: ID file yang akan didownload.
- MIME_TYPE: jenis MIME yang akan diekspor.
- REVISION_ID: ID revisi yang akan didownload.
- ACCESS_TOKEN: token akses yang memberikan akses ke API.