Google Drive API, डाउनलोड और एक्सपोर्ट करने से जुड़ी कई कार्रवाइयों के साथ काम करता है. इनके बारे में यहां दी गई टेबल में बताया गया है:
| डाउनलोड करने की कार्रवाइयां |
|
||||
| कार्रवाइयां एक्सपोर्ट करना |
|
Drive API में, blob फ़ाइल का मतलब Google Drive में सेव की गई किसी भी रॉ बाइनरी फ़ाइल से है. जैसे, इमेज, वीडियो, और PDF. यह Google Workspace दस्तावेज़ से अलग होती है. यह JavaScript के Blob ऑब्जेक्ट को रेफ़र नहीं करता है. यहां बताए गए फ़ाइल टाइप के बारे में ज़्यादा जानकारी के लिए, फ़ाइल टाइप देखें. इसमें, blob और Google Workspace फ़ाइलें भी शामिल हैं.
फ़ाइल का कॉन्टेंट डाउनलोड या एक्सपोर्ट करने से पहले, पुष्टि करें कि उपयोगकर्ता files संसाधन पर मौजूद capabilities.canDownload फ़ील्ड का इस्तेमाल करके फ़ाइल डाउनलोड कर सकते हैं.
इस दस्तावेज़ में आगे, डाउनलोड और एक्सपोर्ट करने से जुड़ी इन कार्रवाइयों को पूरा करने के बारे में ज़्यादा जानकारी दी गई है.
ब्लॉब फ़ाइल का कॉन्टेंट डाउनलोड करें
Drive पर सेव की गई किसी बड़ी फ़ाइल को डाउनलोड करने के लिए, files.get तरीके का इस्तेमाल करें. इसके लिए, डाउनलोड की जाने वाली फ़ाइल का आईडी और alt system
parameter का इस्तेमाल करें.
alt=media पैरामीटर, सर्वर को बताता है कि कॉन्टेंट को डाउनलोड करने का अनुरोध किया जा रहा है. ऐसा जवाब के वैकल्पिक फ़ॉर्मैट के तौर पर किया जा रहा है.
alt सिस्टम पैरामीटर, Google के सभी REST API में उपलब्ध है. अगर Drive API क्लाइंट लाइब्रेरी का इस्तेमाल किया जाता है, तो आपको इस पैरामीटर को साफ़ तौर पर सेट करने की ज़रूरत नहीं है. ऐसा इसलिए, क्योंकि क्लाइंट लाइब्रेरी का तरीका, alt=media पैरामीटर को बुनियादी एचटीटीपी अनुरोध में जोड़ता है.
यहां दिए गए कोड सैंपल में, किसी फ़ाइल को डाउनलोड करने के लिए files.get तरीके का इस्तेमाल करने का तरीका बताया गया है:
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"
इनकी जगह ये डालें:
- FILE_ID: डाउनलोड की जाने वाली फ़ाइल का आईडी.
- ACCESS_TOKEN: यह ऐक्सेस टोकन है, जो एपीआई का ऐक्सेस देता है.
- FILE_NAME: आउटपुट फ़ाइल का नाम.
आपके ऐप्लिकेशन से डाउनलोड की गई फ़ाइलों को ऐसे स्कोप के साथ अनुमति दी जानी चाहिए जिससे फ़ाइल के कॉन्टेंट को पढ़ने का ऐक्सेस मिल सके. उदाहरण के लिए, drive.readonly.metadata स्कोप का इस्तेमाल करने वाले किसी ऐप्लिकेशन को, फ़ाइल के कॉन्टेंट डाउनलोड करने की अनुमति नहीं है.
क्लाइंट लाइब्रेरी के कोड सैंपल, drive फ़ाइल स्कोप का इस्तेमाल करते हैं. इससे उपयोगकर्ता, आपकी सभी Drive फ़ाइलें देख और मैनेज कर सकते हैं. Drive के स्कोप के बारे में ज़्यादा जानने के लिए, Google Drive API के स्कोप चुनना लेख पढ़ें.
जिन उपयोगकर्ताओं के पास owner अनुमतियां (मेरी ड्राइव में मौजूद फ़ाइलों के लिए) या organizer अनुमतियां (शेयर की गई ड्राइव में मौजूद फ़ाइलों के लिए) होती हैं वे DownloadRestrictionsMetadata ऑब्जेक्ट के ज़रिए, डाउनलोड करने पर पाबंदी लगा सकते हैं. ज़्यादा जानकारी के लिए, लोगों को, आपकी फ़ाइल डाउनलोड करने, प्रिंट करने या उसे कॉपी करने से रोकना लेख पढ़ें.
गलत इस्तेमाल के तौर पर पहचानी गई फ़ाइलें (जैसे कि नुकसान पहुंचाने वाला सॉफ़्टवेयर) सिर्फ़ फ़ाइल का मालिक डाउनलोड कर सकता है.
इसके अलावा, acknowledgeAbuse क्वेरी पैरामीटर को true पर सेट करना ज़रूरी है. इससे यह पता चलता है कि उपयोगकर्ता ने संभावित रूप से अनचाहे सॉफ़्टवेयर या अन्य आपत्तिजनक फ़ाइलों को डाउनलोड करने के जोखिम को स्वीकार कर लिया है. आपका ऐप्लिकेशन, इस क्वेरी पैरामीटर का इस्तेमाल करने से पहले, उपयोगकर्ता को इंटरैक्टिव तरीके से चेतावनी दे.
मेमोरी में मौजूद फ़ाइल डेटा को ऐक्सेस करना
अगर आपके ऐप्लिकेशन को फ़ाइल के डेटा को सीधे मेमोरी में ऐक्सेस करना है (उदाहरण के लिए, इसे लोकल डिस्क में सेव करने के बजाय बाइट बफ़र के तौर पर), तो क्लाइंट लाइब्रेरी के अनुरोध में बदलाव किया जा सकता है या स्ट्रीम किए गए डेटा को प्रोसेस किया जा सकता है:
Node.js: डिफ़ॉल्ट रूप से, Node.js क्लाइंट लाइब्रेरी, फ़ाइल के कॉन्टेंट को
Readableस्ट्रीम के तौर पर दिखाती है. फ़ाइल को लोकल डिस्क में सेव करने के लिए: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);इसके अलावा, अगर आपको स्ट्रीम के बजाय डेटा को सीधे मेमोरी में
ArrayBufferके तौर पर दिखाना है, तो अनुरोध के विकल्पों मेंresponseTypeपैरामीटर सेट करें: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: ब्लॉब फ़ाइल डाउनलोड करने के लिए, Python कोड का सैंपल पहले से ही डाउनलोड किए गए चंक को मेमोरी में मौजूद
io.BytesIO()ऑब्जेक्ट में लिखता है. रॉ बाइट ऐक्सेस करने के लिए,file.getvalue()पर कॉल करें.Java: ब्लॉब फ़ाइल डाउनलोड करने के लिए Java कोड का सैंपल, मेमोरी में डाउनलोड किए गए बाइट को कैप्चर करने के लिए
java.io.ByteArrayOutputStreamका इस्तेमाल करता है. रॉ बाइट ऐरे को ऐक्सेस करने के लिए,outputStream.toByteArray()का इस्तेमाल करें..NET: ब्लॉब फ़ाइल डाउनलोड करने के लिए C# कोड सैंपल में
System.IO.MemoryStreamका इस्तेमाल किया जाता है. बाइट ऐरे को ऐक्सेस करने के लिए,stream.ToArray()का इस्तेमाल करें.Apps Script: ब्लॉब फ़ाइल डाउनलोड करने के लिए, Apps Script के कोड के इस सैंपल में
response.getBlob()तरीके का इस्तेमाल किया गया है. इससेBlobऑब्जेक्ट मिलता है.getBytes()तरीके का इस्तेमाल करके, इसे बाइट ऐरे में बदलें.
कुछ हिस्सा डाउनलोड करना
कुछ हिस्सा डाउनलोड करने का मतलब है कि किसी फ़ाइल का सिर्फ़ वह हिस्सा डाउनलोड करना जो आपने चुना है. Range हेडर के साथ बाइट रेंज का इस्तेमाल करके, फ़ाइल का वह हिस्सा तय किया जा सकता है जिसे आपको डाउनलोड करना है. उदाहरण के लिए:
Range: bytes=500-999
ब्लॉब फ़ाइल के कॉन्टेंट को पिछले वर्शन में डाउनलोड करना
ब्लॉब फ़ाइलों के कॉन्टेंट को पुराने वर्शन में डाउनलोड करने के लिए, revisions.get तरीके का इस्तेमाल करें. इसके लिए, आपको फ़ाइल का आईडी, बदलाव का आईडी, और alt सिस्टम पैरामीटर देना होगा.
alt=media पैरामीटर, सर्वर को बताता है कि कॉन्टेंट को डाउनलोड करने का अनुरोध किया जा रहा है. ऐसा जवाब के वैकल्पिक फ़ॉर्मैट के तौर पर किया जा रहा है. files.get की तरह, revisions.get वाला तरीका भी acknowledgeAbuse क्वेरी पैरामीटर और Range हेडर को स्वीकार करता है.
सिर्फ़ उन कॉन्टेंट वर्शन को डाउनलोड किया जा सकता है जिन्हें "हमेशा के लिए रखें" के तौर पर मार्क किया गया है. अगर आपको किसी बदलाव को डाउनलोड करना है, तो पहले उसे "हमेशा बनाए रखें" पर सेट करें. ज़्यादा जानकारी के लिए, अपने-आप मिटने की सुविधा से सुरक्षित रखने के लिए, वर्शन तय करना लेख पढ़ें.
बदलाव डाउनलोड करने के बारे में ज़्यादा जानकारी के लिए, लंबे समय तक चलने वाले ऑपरेशन मैनेज करना लेख पढ़ें.
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"
इनकी जगह ये डालें:
- FILE_ID: डाउनलोड की जाने वाली फ़ाइल का आईडी.
- REVISION_ID: डाउनलोड किए जाने वाले वर्शन का आईडी.
- ACCESS_TOKEN: यह ऐक्सेस टोकन है, जो एपीआई का ऐक्सेस देता है.
- FILE_NAME: आउटपुट फ़ाइल का नाम.
ब्राउज़र में, blob फ़ाइल का कॉन्टेंट डाउनलोड करना
अगर आपको एपीआई के बजाय ब्राउज़र में Drive पर सेव की गई बड़ी फ़ाइलों का कॉन्टेंट डाउनलोड करना है, तो files रिसॉर्स के webContentLink फ़ील्ड का इस्तेमाल करें. अगर उपयोगकर्ता के पास फ़ाइल डाउनलोड करने का ऐक्सेस है, तो उसे फ़ाइल और उसके कॉन्टेंट को डाउनलोड करने का लिंक मिलता है. आपके पास किसी व्यक्ति को इस यूआरएल पर रीडायरेक्ट करने या इसे क्लिक किए जा सकने वाले लिंक के तौर पर उपलब्ध कराने का विकल्प होता है.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=webContentLink" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
इनकी जगह ये डालें:
- FILE_ID: उस फ़ाइल का आईडी जिसके लिए डाउनलोड लिंक पाना है.
- ACCESS_TOKEN: यह ऐक्सेस टोकन है, जो एपीआई का ऐक्सेस देता है.
लंबे समय तक चलने वाली कार्रवाइयों का इस्तेमाल करके, बड़ी बाइनरी फ़ाइल का कॉन्टेंट डाउनलोड करना
लंबे समय तक चलने वाले ऑपरेशन (एलआरओ) का इस्तेमाल करके, blob फ़ाइलों का कॉन्टेंट डाउनलोड करने के लिए, डाउनलोड की जाने वाली फ़ाइल के आईडी के साथ files.download तरीके का इस्तेमाल करें. आपके पास बदलाव का आईडी सेट करने का विकल्प होता है.
Google Vids की फ़ाइलें डाउनलोड करने का यही तरीका है. Google Vids फ़ाइलों को एक्सपोर्ट करने की कोशिश करने पर, आपको fileNotExportable गड़बड़ी का मैसेज मिलता है.
ज़्यादा जानकारी के लिए, लंबे समय तक चलने वाले ऑपरेशन मैनेज करना लेख पढ़ें.
curl
नीचे दी गई कर्ल कमांड, एलआरओ शुरू करती है और JSON रिस्पॉन्स दिखाती है. फ़ाइल डाउनलोड करने या इस एलआरओ को पोल करने के लिए, आपको कॉन्टेंट का यूआरएल पाने के लिए, मिले हुए आईडी का इस्तेमाल करके दूसरा अनुरोध करना होगा. इसके बाद, फ़ाइल डाउनलोड करने के लिए, उस यूआरएल पर फ़ाइनल कर्ल अनुरोध किया जा सकता है. ज़्यादा जानकारी के लिए, लंबे समय तक चलने वाले ऑपरेशन मैनेज करना लेख पढ़ें.
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"
इनकी जगह ये डालें:
- FILE_ID: डाउनलोड की जाने वाली फ़ाइल का आईडी.
- ACCESS_TOKEN: यह ऐक्सेस टोकन है, जो एपीआई का ऐक्सेस देता है.
Google Workspace के दस्तावेज़ का कॉन्टेंट एक्सपोर्ट करना
Google Workspace दस्तावेज़ के बाइट कॉन्टेंट को एक्सपोर्ट करने के लिए, एक्सपोर्ट की जाने वाली फ़ाइल के आईडी और सही एमआईएमई टाइप के साथ files.export तरीके का इस्तेमाल करें. एक्सपोर्ट किए गए कॉन्टेंट का साइज़ 10 एमबी से ज़्यादा नहीं होना चाहिए.
यहां दिए गए कोड सैंपल में, Google Workspace दस्तावेज़ को PDF फ़ॉर्मैट में एक्सपोर्ट करने के लिए, files.export तरीके का इस्तेमाल करने का तरीका बताया गया है:
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"
इनकी जगह ये डालें:
- FILE_ID: डाउनलोड की जाने वाली फ़ाइल का आईडी.
- ACCESS_TOKEN: यह ऐक्सेस टोकन है, जो एपीआई का ऐक्सेस देता है.
- FILE_NAME: आउटपुट फ़ाइल का नाम.
क्लाइंट लाइब्रेरी के कोड सैंपल, प्रतिबंधित drive स्कोप का इस्तेमाल करते हैं. इससे उपयोगकर्ता, आपकी सभी Drive फ़ाइलों को देख और मैनेज कर सकते हैं. Drive के स्कोप के बारे में ज़्यादा जानने के लिए, Google Drive API के स्कोप चुनना लेख पढ़ें.
कोड के सैंपल में, एक्सपोर्ट किए गए MIME टाइप को application/pdf के तौर पर भी दिखाया गया है. Google Workspace के हर दस्तावेज़ के लिए, एक्सपोर्ट किए जा सकने वाले सभी MIME टाइप की पूरी सूची देखने के लिए, Google Workspace दस्तावेज़ों के लिए एक्सपोर्ट किए जा सकने वाले MIME टाइप लेख पढ़ें.
किसी ब्राउज़र में Google Workspace दस्तावेज़ का कॉन्टेंट एक्सपोर्ट करना
किसी ब्राउज़र में Google Workspace दस्तावेज़ के कॉन्टेंट को एक्सपोर्ट करने के लिए, files संसाधन के exportLinks फ़ील्ड का इस्तेमाल करें. दस्तावेज़ के टाइप के आधार पर, डाउनलोड करने के लिए फ़ाइल और उसके कॉन्टेंट का लिंक मिलता है. यह लिंक, उपलब्ध हर एमआईएमई टाइप के लिए मिलता है. उपयोगकर्ता को किसी यूआरएल पर रीडायरेक्ट किया जा सकता है या उसे क्लिक करने लायक लिंक के तौर पर दिखाया जा सकता है.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=id,name,exportLinks" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
इनकी जगह ये डालें:
- FILE_ID: उस फ़ाइल का आईडी जिसके लिए डाउनलोड लिंक पाना है.
- ACCESS_TOKEN: यह ऐक्सेस टोकन है, जो एपीआई का ऐक्सेस देता है.
ब्राउज़र में, Google Workspace दस्तावेज़ के कॉन्टेंट को पुराने वर्शन में एक्सपोर्ट करना
किसी ब्राउज़र में Google Workspace दस्तावेज़ के कॉन्टेंट को पुराने वर्शन में एक्सपोर्ट करने के लिए, revisions.get तरीके का इस्तेमाल करें. इसके लिए, डाउनलोड की जाने वाली फ़ाइल का आईडी और एक्सपोर्ट लिंक जनरेट करने के लिए, बदलाव का आईडी इस्तेमाल करें. इस लिंक से, डाउनलोड किया जा सकता है. अगर उपयोगकर्ता के पास फ़ाइल डाउनलोड करने का ऐक्सेस है, तो फ़ाइल और उसके कॉन्टेंट को डाउनलोड करने का लिंक दिखाया जाता है. आपके पास उपयोगकर्ता को इस यूआरएल पर रीडायरेक्ट करने या इसे क्लिक किए जा सकने वाले लिंक के तौर पर उपलब्ध कराने का विकल्प होता है.
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"
इनकी जगह ये डालें:
- FILE_ID: डाउनलोड की जाने वाली फ़ाइल का आईडी.
- REVISION_ID: डाउनलोड किए जाने वाले वर्शन का आईडी.
- ACCESS_TOKEN: यह ऐक्सेस टोकन है, जो एपीआई का ऐक्सेस देता है.
लंबे समय तक चलने वाली कार्रवाइयों का इस्तेमाल करके, Google Workspace दस्तावेज़ के कॉन्टेंट को एक्सपोर्ट करना
लंबे समय तक चलने वाली कार्रवाइयों (एलआरओ) का इस्तेमाल करके, Google Workspace दस्तावेज़ का कॉन्टेंट एक्सपोर्ट करने के लिए, files.download तरीके का इस्तेमाल करें. इसके लिए, डाउनलोड की जाने वाली फ़ाइल का आईडी और संशोधन का आईडी इस्तेमाल करें. ज़्यादा जानकारी के लिए, लंबे समय तक चलने वाले ऑपरेशन मैनेज करना लेख पढ़ें.
curl
नीचे दी गई कर्ल कमांड, एलआरओ शुरू करती है और JSON रिस्पॉन्स दिखाती है. फ़ाइल डाउनलोड करने या इस एलआरओ को पोल करने के लिए, आपको कॉन्टेंट का यूआरएल पाने के लिए, मिले हुए आईडी का इस्तेमाल करके दूसरा अनुरोध करना होगा. इसके बाद, फ़ाइल डाउनलोड करने के लिए, उस यूआरएल पर फ़ाइनल कर्ल अनुरोध किया जा सकता है. ज़्यादा जानकारी के लिए, लंबे समय तक चलने वाले ऑपरेशन मैनेज करना लेख पढ़ें.
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"
इनकी जगह ये डालें:
- FILE_ID: डाउनलोड की जाने वाली फ़ाइल का आईडी.
- MIME_TYPE: एक्सपोर्ट करने के लिए एमआईएमई टाइप.
- REVISION_ID: डाउनलोड किए जाने वाले वर्शन का आईडी.
- ACCESS_TOKEN: यह ऐक्सेस टोकन है, जो एपीआई का ऐक्सेस देता है.