फ़ाइलें बनाना और उन्हें मैनेज करना

इस गाइड में, Google Drive API का इस्तेमाल करके Google Drive में फ़ाइलें बनाने और उन्हें मैनेज करने का तरीका बताया गया है.

फ़ाइल बनाना

Drive में ऐसी फ़ाइल बनाने के लिए जिसमें कोई मेटाडेटा या कॉन्टेंट न हो, files रिसॉर्स पर create तरीके का इस्तेमाल करें. इसमें कोई पैरामीटर नहीं होता.

फ़ाइल बनाने पर, यह तरीका files संसाधन दिखाता है. फ़ाइल को kind के तौर पर drive.file, id, "Untitled" के name, और application/octet-stream के mimeType के तौर पर सेव किया जाता है. uploadType को 'ज़रूरी' के तौर पर मार्क किया गया है, लेकिन इसकी डिफ़ॉल्ट वैल्यू media है. इसलिए, आपको इसे सबमिट करने की ज़रूरत नहीं है.

Drive में फ़ाइल की सीमाओं के बारे में ज़्यादा जानने के लिए, फ़ाइल और फ़ोल्डर की सीमाएं देखें.

यहां दिए गए कोड सैंपल में, बिना मेटाडेटा या कॉन्टेंट वाली फ़ाइल बनाने का तरीका बताया गया है:

Node.js

/**
 * Create an empty file.
 * @return {string} The created file's ID.
 */
async function createEmptyFile() {
  // Get credentials and build service
  // TODO(developer): Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});

  try {
    const response = await service.files.create({});
    console.log('File ID: ' + response.data.id);
    return response.data.id;
  } catch (err) {
    // TODO(developer): Handle error
    console.error(err);
  }
}

curl

curl -X POST 'https://www.googleapis.com/drive/v3/files' \
 -H 'Authorization: Bearer ACCESS_TOKEN'

इनकी जगह ये डालें:

  • ACCESS_TOKEN: आपके ऐप्लिकेशन का OAuth 2.0 टोकन.

फ़ील्ड पैरामीटर का इस्तेमाल करना

अगर आपको जवाब में दिखाए जाने वाले फ़ील्ड तय करने हैं, तो files रिसॉर्स के किसी भी तरीके के साथ fields सिस्टम पैरामीटर सेट किया जा सकता है. fields पैरामीटर को शामिल न करने पर, सर्वर उस तरीके के लिए फ़ील्ड का डिफ़ॉल्ट सेट दिखाता है. उदाहरण के लिए, list तरीके से, हर फ़ाइल के लिए सिर्फ़ kind, id, name, mimeType, और resourceKey फ़ील्ड दिखते हैं. अलग-अलग फ़ील्ड वापस पाने के लिए, चुनिंदा फ़ील्ड वापस पाना लेख पढ़ें.

फ़ाइल का मालिकाना हक

Drive API का इस्तेमाल करके फ़ाइल बनाने पर, मालिकाना हक इस बात पर निर्भर करता है कि ऐप्लिकेशन ने पुष्टि करने के लिए किस तरह के क्रेडेंशियल इस्तेमाल किए हैं. इसके लिए, ये तरीके अपनाए जाते हैं:

  • उपयोगकर्ता खाता (OAuth 2.0): अगर ऐप्लिकेशन, किसी उपयोगकर्ता की ओर से पुष्टि करता है, तो वह उपयोगकर्ता फ़ाइल का मालिक बन जाता है. इसके बाद, फ़ाइल उनके My Drive फ़ोल्डर या चुने गए फ़ोल्डर में सेव हो जाती है. इससे उनके स्टोरेज कोटे का इस्तेमाल होता है.

  • सेवा खाता: अगर ऐप्लिकेशन, सेवा खाते का इस्तेमाल करके पुष्टि करता है, तो सेवा खाता फ़ाइल का मालिक होता है. इसके बाद, फ़ाइल सेवा खाते के Drive स्टोरेज में सेव हो जाती है. जब तक साफ़ तौर पर शेयर न किया जाए, तब तक फ़ाइलें Drive के अन्य स्टोरेज खातों में नहीं दिखतीं. अगर सेवा खाता मिटा दिया जाता है, तो उससे जुड़ी सभी फ़ाइलें तुरंत मिटा दी जाती हैं.

    अगर आपको किसी सेवा खाते का इस्तेमाल करना है, लेकिन किसी फ़ाइल का मालिकाना हक किसी खास उपयोगकर्ता खाते को देना है, तो डोमेन-वाइड डेलिगेशन का इस्तेमाल करें. इससे सेवा खाते को किसी उपयोगकर्ता के तौर पर काम करने और उसकी ओर से फ़ाइलें बनाने की अनुमति मिलती है. ज़्यादा जानकारी के लिए, सेवा खाते को डोमेन-वाइड अथॉरिटी सौंपना लेख पढ़ें.

फ़ाइल की अनुमतियों के बारे में ज़्यादा जानने के लिए, फ़ाइलें, फ़ोल्डर, और ड्राइव शेयर करना लेख पढ़ें.

अपनी फ़ाइलों के साथ इस्तेमाल करने के लिए आईडी जनरेट करना

files संसाधन पर मौजूद generateIds तरीके का इस्तेमाल करके, यूनीक फ़ाइल आईडी पहले से जनरेट किए जा सकते हैं. इनका इस्तेमाल Drive में फ़ाइलें और फ़ोल्डर बनाते या कॉपी करते समय किया जा सकता है. यह तब काम आ सकता है, जब आपको Drive के फ़ाइल आईडी अपने-आप असाइन करने के बजाय, अपने ऐप्लिकेशन से फ़ाइल आईडी कंट्रोल करने हों.

count क्वेरी पैरामीटर का इस्तेमाल करके, जनरेट किए गए आईडी की संख्या सेट की जा सकती है. अगर count सेट नहीं किया जाता है, तो डिफ़ॉल्ट रूप से 10 वैल्यू दिखती हैं. ज़्यादा से ज़्यादा 1,000 आईडी का अनुरोध किया जा सकता है.

इसके अलावा, यह भी तय किया जा सकता है कि आईडी का इस्तेमाल किस space में किया जा सकता है और आईडी का इस्तेमाल किन type के लिए किया जा सकता है.

आईडी जनरेट होने के बाद, इसे id फ़ील्ड के ज़रिए create या copy तरीके से पास किया जा सकता है. इससे यह पक्का होता है कि बनाई गई या कॉपी की गई फ़ाइल में, पहले से तय किया गया आईडी इस्तेमाल किया गया हो.

अगर फ़ाइल बन जाती है या कॉपी हो जाती है, तो बाद में फिर से कोशिश करने पर 409 Conflict एचटीटीपी स्टेटस कोड का रिस्पॉन्स मिलता है. साथ ही, डुप्लीकेट फ़ाइलें नहीं बनती हैं.

ध्यान दें कि पहले से जनरेट किए गए आईडी, Google Workspace फ़ाइलें बनाने के लिए इस्तेमाल नहीं किए जा सकते. हालांकि, application/vnd.google-apps.drive-sdk और application/vnd.google-apps.folder MIME टाइप के लिए इनका इस्तेमाल किया जा सकता है. इसी तरह, Google Workspace फ़ाइल फ़ॉर्मैट में बदलने के लिए किए गए अपलोड भी काम नहीं करते.

नीचे दिए गए कोड सैंपल में, यूनीक फ़ाइल आईडी पहले से जनरेट करने का तरीका बताया गया है:

Node.js

/**
 * Pre-generate unique file IDs.
 */
async function generateFileIds() {
  // Get credentials and build service
  // TODO(developer): Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});

  try {
    const response = await service.files.generateIds({
      count: 10,
      space: 'drive'
    });
    const ids = response.data.ids;
    console.log('Generated IDs:');
    for (const id of ids) {
      console.log(id);
    }
  } catch (err) {
    // TODO(developer): Handle error
    console.error(err);
  }
}

curl

curl 'https://www.googleapis.com/drive/v3/files/generateIds?count=10&space=drive' \
 -H 'Authorization: Bearer ACCESS_TOKEN'

इनकी जगह ये डालें:

  • ACCESS_TOKEN: आपके ऐप्लिकेशन का OAuth 2.0 टोकन.

सिर्फ़ मेटाडेटा वाली फ़ाइलें बनाना

सिर्फ़ मेटाडेटा वाली फ़ाइलों में कोई कॉन्टेंट नहीं होता. मेटाडेटा, फ़ाइल के बारे में जानकारी देने वाला डेटा होता है. जैसे, name, mimeType, और createdTime. name जैसे फ़ील्ड, उपयोगकर्ता के हिसाब से नहीं होते और हर उपयोगकर्ता के लिए एक जैसे दिखते हैं. वहीं, viewedByMeTime जैसे फ़ील्ड में उपयोगकर्ता के हिसाब से वैल्यू होती हैं.

सिर्फ़ मेटाडेटा वाली फ़ाइल का एक उदाहरण, एमआईएमई टाइप application/vnd.google-apps.folder वाला फ़ोल्डर है. ज़्यादा जानकारी के लिए, फ़ोल्डर बनाना और उनमें डेटा डालना लेख पढ़ें. एक और उदाहरण, Drive पर मौजूद किसी ऐसी फ़ाइल का शॉर्टकट है जिसका एमआईएमई टाइप application/vnd.google-apps.shortcut है. ज़्यादा जानकारी के लिए, Drive में मौजूद किसी फ़ाइल का शॉर्टकट बनाना लेख पढ़ें.

थंबनेल इमेज मैनेज करना

थंबनेल से, उपयोगकर्ताओं को Drive में मौजूद फ़ाइलों की पहचान करने में मदद मिलती है. Drive, सामान्य फ़ाइल टाइप के लिए थंबनेल अपने-आप जनरेट कर सकता है. इसके अलावा, आपके पास अपने ऐप्लिकेशन से जनरेट की गई थंबनेल इमेज उपलब्ध कराने का विकल्प भी होता है. ज़्यादा जानकारी के लिए, थंबनेल अपलोड करना लेख पढ़ें.

किसी मौजूदा फ़ाइल को कॉपी करना

किसी फ़ाइल को कॉपी करने और अनुरोध किए गए अपडेट लागू करने के लिए, files संसाधन पर copy तरीके का इस्तेमाल करें. कॉपी करने के लिए fileId ढूंढने के लिए, list तरीके का इस्तेमाल करें.

पैच सिमैंटिक के ज़रिए अपडेट लागू किए जा सकते हैं. इसका मतलब है कि किसी संसाधन में कुछ बदलाव किए जा सकते हैं. आपको उन फ़ील्ड को साफ़ तौर पर सेट करना होगा जिनमें आपको अपने अनुरोध में बदलाव करना है. अनुरोध में शामिल नहीं किए गए फ़ील्ड की मौजूदा वैल्यू बनी रहती हैं. ज़्यादा जानकारी के लिए, आंशिक संसाधनों के साथ काम करना लेख पढ़ें.

generateIds तरीके का इस्तेमाल करके, कॉपी की गई फ़ाइल का आईडी पहले से सेट किया जा सकता है. ज़्यादा जानकारी के लिए, अपनी फ़ाइलों के साथ इस्तेमाल करने के लिए आईडी जनरेट करना लेख पढ़ें.

ध्यान दें कि कॉल को अनुमति देने के लिए, आपको सही Drive API स्कोप का इस्तेमाल करना होगा. Drive के स्कोप के बारे में ज़्यादा जानने के लिए, Google Drive API के स्कोप चुनना लेख पढ़ें.

यहां दिए गए कोड सैंपल में, किसी फ़ाइल को कॉपी करने और उसका नाम अपडेट करने का तरीका बताया गया है:

Node.js

/**
 * Copy an existing file.
 * @return {string} The copied file's ID.
 */
async function copyFile() {
  // Get credentials and build service
  // TODO(developer): Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});

  try {
    const response = await service.files.copy({
      fileId: 'FILE_ID',
      requestBody: {
        name: 'FILE_COPY_NAME'
      }
    });
    console.log('Copied file ID: ' + response.data.id);
    return response.data.id;
  } catch (err) {
    // TODO(developer): Handle error
    console.error(err);
  }
}

इनकी जगह ये डालें:

  • FILE_ID: कॉपी की जाने वाली फ़ाइल का आईडी.
  • FILE_COPY_NAME: नई फ़ाइल का नाम.

curl

curl -X POST 'https://www.googleapis.com/drive/v3/files/FILE_ID/copy' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
    "name": "FILE_COPY_NAME"
 }'

इनकी जगह ये डालें:

  • FILE_ID: कॉपी की जाने वाली फ़ाइल का आईडी.
  • ACCESS_TOKEN: आपके ऐप्लिकेशन का OAuth 2.0 टोकन.
  • FILE_COPY_NAME: नई फ़ाइल का नाम.

सीमाएं और ज़रूरी बातें

फ़ाइलों को कॉपी करने से पहले, इन सीमाओं और बातों का ध्यान रखें:

  • अनुमतियां:

    • files संसाधन का DownloadRestrictionsMetadata ऑब्जेक्ट यह तय करता है कि फ़ाइल को कौन कॉपी कर सकता है. ज़्यादा जानकारी के लिए, उपयोगकर्ताओं को अपनी फ़ाइल डाउनलोड, प्रिंट या कॉपी करने से रोकना लेख पढ़ें.
    • capabilities.canCopy फ़ील्ड रिसॉर्स से यह तय होता है कि उपयोगकर्ता किसी फ़ाइल को कॉपी कर सकता है या नहीं. ज़्यादा जानकारी के लिए, फ़ाइल की सुविधाओं के बारे में जानकारी लेख पढ़ें.
    • कॉपी की गई फ़ाइल का मालिकाना हक, कॉपी बनाने वाले उपयोगकर्ता के पास होता है. सोर्स फ़ाइल की अन्य शेयरिंग सेटिंग कॉपी नहीं की जाती हैं. अगर कॉपी को किसी शेयर किए गए फ़ोल्डर में बनाया जाता है, तो उस पर फ़ोल्डर की अनुमतियां लागू होती हैं.
    • कॉपी की गई फ़ाइल का मालिकाना हक बदल सकता है. साथ ही, ऐसा हो सकता है कि कॉपी की गई फ़ाइल में, ओरिजनल फ़ाइल को शेयर करने की सेटिंग लागू न हों. इन सेटिंग को रीसेट करने की ज़रूरत पड़ सकती है.
  • फ़ाइल मैनेजमेंट:

    • कुछ फ़ाइलें कभी कॉपी नहीं की जा सकतीं. जैसे, तीसरे पक्ष के शॉर्टकट.
    • किसी फ़ाइल को सिर्फ़ एक पैरंट फ़ोल्डर में कॉपी किया जा सकता है. एक से ज़्यादा पैरंट तय नहीं किए जा सकते. अगर parents फ़ील्ड के बारे में जानकारी नहीं दी गई है, तो फ़ाइल को सोर्स फ़ाइल से ऐसे पैरंट फ़ोल्डर की जानकारी मिलती है जिन्हें खोजा जा सकता है.
    • फ़ोल्डर एक तरह की फ़ाइल होता है, लेकिन इसे कॉपी नहीं किया जा सकता. इसके बजाय, डेस्टिनेशन फ़ोल्डर बनाएं और मौजूदा फ़ाइलों के parents फ़ील्ड को डेस्टिनेशन फ़ोल्डर पर सेट करें. इसके बाद, ओरिजनल सोर्स फ़ोल्डर को मिटाया जा सकता है.
    • जब तक कोई नया फ़ाइल नाम नहीं दिया जाता, तब तक copy तरीके से बनाई गई फ़ाइल का नाम, ओरिजनल फ़ाइल के नाम जैसा ही होता है.
    • copy का ज़्यादा इस्तेमाल करने से, Drive API के कोटे की सीमाएं पार हो सकती हैं. ज़्यादा जानकारी के लिए, इस्तेमाल की सीमाएं देखें.

यहां कुछ ऐसे तरीके दिए गए हैं जिन्हें आज़माया जा सकता है: