สร้างและจัดการไฟล์

คู่มือนี้อธิบายวิธีสร้างและจัดการไฟล์ใน Google ไดรฟ์โดยใช้ Google Drive API

สร้างไฟล์

หากต้องการสร้างไฟล์ในไดรฟ์ที่ไม่มีข้อมูลเมตาหรือเนื้อหา ให้ใช้เมธอด create ในทรัพยากร files ที่ไม่มีพารามิเตอร์

เมื่อสร้างไฟล์ เมธอดจะแสดงผลทรัพยากร files ระบบจะkindไฟล์เป็น drive.file, id, name เป็น "ไม่มีชื่อ" และmimeTypeเป็น application/octet-stream ระบบจะทําเครื่องหมาย uploadType เป็นต้องระบุ แต่ค่าเริ่มต้นคือ media คุณจึงไม่ต้อง ระบุค่าดังกล่าว

ดูข้อมูลเพิ่มเติมเกี่ยวกับขีดจำกัดของไฟล์ในไดรฟ์ได้ที่ขีดจำกัดของไฟล์และโฟลเดอร์

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างไฟล์ที่ไม่มีข้อมูลเมตาหรือ เนื้อหา

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 ของแอป

ใช้พารามิเตอร์ฟิลด์

หากต้องการระบุช่องที่จะแสดงผลในการตอบกลับ คุณสามารถตั้งค่าfields พารามิเตอร์ระบบ ด้วยเมธอดใดก็ได้ของทรัพยากร files หากคุณละเว้นพารามิเตอร์ fields เซิร์ฟเวอร์จะแสดงผลชุดฟิลด์เริ่มต้นที่เฉพาะเจาะจงสำหรับเมธอด เช่น เมธอด list จะแสดงเฉพาะช่อง kind, id, name, mimeType และ resourceKey สำหรับแต่ละไฟล์ หากต้องการแสดงช่องอื่น ให้ดูแสดงช่องที่เฉพาะเจาะจง

การเป็นเจ้าของไฟล์

เมื่อสร้างไฟล์โดยใช้ Drive API ความเป็นเจ้าของจะขึ้นอยู่กับ ข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์ที่แอปใช้ในลักษณะต่อไปนี้

  • บัญชีผู้ใช้ (OAuth 2.0): หากแอปพลิเคชันตรวจสอบสิทธิ์ในนามของผู้ใช้ ผู้ใช้รายนั้นจะเป็นเจ้าของไฟล์ จากนั้นไฟล์จะอยู่ในโฟลเดอร์ไดรฟ์ของฉันหรือโฟลเดอร์ที่ระบุ ซึ่งจะใช้โควต้าพื้นที่เก็บข้อมูลของบัญชี

  • บัญชีบริการ: หากแอปพลิเคชันตรวจสอบสิทธิ์โดยใช้บัญชีบริการ เจ้าของไฟล์คือบัญชีบริการ จากนั้นไฟล์จะอยู่ในพื้นที่เก็บข้อมูล Google ไดรฟ์เฉพาะของบัญชีบริการ ไฟล์จะไม่ปรากฏในบัญชีพื้นที่เก็บข้อมูล Google ไดรฟ์อื่นๆ เว้นแต่จะมีการแชร์อย่างชัดแจ้ง หากลบบัญชีบริการ ระบบจะลบไฟล์ทั้งหมดที่เป็นของบัญชีนั้นทันที

    หากคุณใช้บัญชีบริการแต่ต้องการให้บัญชีผู้ใช้ที่เฉพาะเจาะจงเป็นเจ้าของไฟล์ ให้ใช้การมอบสิทธิ์ระดับโดเมน ซึ่งจะช่วยให้บัญชีบริการสามารถ ทำหน้าที่แทนผู้ใช้และสร้างไฟล์ในนามของผู้ใช้ได้ ดูข้อมูลเพิ่มเติมได้ที่มอบสิทธิ์ทั่วทั้งโดเมนให้กับบัญชีบริการ

ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์ของไฟล์ได้ที่แชร์ไฟล์ โฟลเดอร์ และ ไดรฟ์

สร้างรหัสเพื่อใช้กับไฟล์

เมธอด generateIds ในแหล่งข้อมูล files ช่วยให้คุณสร้างรหัสไฟล์ที่ไม่ซ้ำล่วงหน้าได้ ซึ่งจะใช้เมื่อสร้างหรือคัดลอกไฟล์และโฟลเดอร์ในไดรฟ์ได้ ซึ่งอาจมีประโยชน์เมื่อคุณต้องการควบคุมรหัสไฟล์ จากแอปของคุณ แทนที่จะให้ไดรฟ์กำหนดรหัสโดยอัตโนมัติ

คุณตั้งค่าจำนวนรหัสที่สร้างขึ้นได้โดยใช้พารามิเตอร์การค้นหา count หากไม่ได้ตั้งค่า count ระบบจะแสดง 10 รายการโดยค่าเริ่มต้น จำนวนรหัสสูงสุดที่คุณขอได้คือ 1,000 รายการ

นอกจากนี้ คุณยังระบุ space ที่ใช้รหัสได้ และ type ของรายการที่ใช้รหัสได้ด้วย

เมื่อสร้างรหัสแล้ว คุณจะส่งรหัสไปยังเมธอด create หรือ copy ได้ ผ่านฟิลด์ id เพื่อให้มั่นใจว่าไฟล์ที่สร้างหรือคัดลอกจะใช้รหัสที่กำหนดไว้ล่วงหน้า

หากสร้างหรือคัดลอกไฟล์สำเร็จ การลองอีกครั้งในภายหลังจะแสดงการตอบกลับรหัสสถานะ HTTP 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 จะมีค่าที่เฉพาะเจาะจงสำหรับผู้ใช้

ตัวอย่างไฟล์ที่มีเฉพาะข้อมูลเมตาคือโฟลเดอร์ที่มีประเภท MIME เป็น application/vnd.google-apps.folder ดูข้อมูลเพิ่มเติมได้ที่สร้างและ ป้อนข้อมูลในโฟลเดอร์ อีกตัวอย่างหนึ่งคือทางลัดที่ ชี้ไปยังไฟล์อื่นในไดรฟ์ที่มีประเภท MIME เป็น application/vnd.google-apps.shortcut โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสร้าง ทางลัดไปยังไฟล์ในไดรฟ์

จัดการรูปภาพปก

ภาพขนาดย่อช่วยให้ผู้ใช้ระบุไฟล์ในไดรฟ์ได้ ไดรฟ์ สามารถสร้างภาพปกสำหรับไฟล์ประเภททั่วไปได้โดยอัตโนมัติ หรือคุณจะระบุ รูปภาพภาพปกที่แอปสร้างขึ้นก็ได้ ดูข้อมูลเพิ่มเติมได้ที่อัปโหลด ภาพปก

คัดลอกไฟล์ที่มีอยู่

หากต้องการคัดลอกไฟล์และใช้อัปเดตที่ขอ ให้ใช้เมธอด copy ในทรัพยากร files หากต้องการค้นหา fileIdที่จะคัดลอก ให้ใช้วิธี list

คุณใช้การอัปเดตผ่านความหมายของแพตช์ได้ ซึ่งหมายความว่าคุณสามารถแก้ไขทรัพยากรบางส่วนได้ คุณต้องตั้งค่าฟิลด์ที่ต้องการ แก้ไขในคำขออย่างชัดเจน ฟิลด์ที่ไม่ได้รวมไว้ในคำขอจะยังคงมีค่าเดิม ดูข้อมูลเพิ่มเติมได้ที่การทำงานกับทรัพยากรบางส่วน

คุณตั้งค่ารหัสไฟล์ของไฟล์ที่คัดลอกไว้ล่วงหน้าได้โดยใช้วิธี generateIds ดูข้อมูลเพิ่มเติมได้ที่ สร้างรหัสเพื่อใช้กับไฟล์

โปรดทราบว่าคุณต้องใช้ขอบเขต Drive API ที่เหมาะสมเพื่อให้สิทธิ์การเรียก ดูข้อมูลเพิ่มเติมเกี่ยวกับขอบเขตของไดรฟ์ได้ที่เลือก ขอบเขต 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: ชื่อของไฟล์ใหม่

ข้อจำกัดและข้อควรพิจารณา

ขณะเตรียมคัดลอกไฟล์ โปรดทราบข้อจำกัดและข้อควรพิจารณาต่อไปนี้

  • สิทธิ์

    • ออบเจ็กต์ DownloadRestrictionsMetadata ของทรัพยากร files จะกำหนด ว่าใครคัดลอกไฟล์ได้ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อป้องกันไม่ให้ผู้ใช้ ดาวน์โหลด พิมพ์ หรือคัดลอก ไฟล์
    • ฟิลด์ทรัพยากร capabilities.canCopy จะกำหนดว่าผู้ใช้จะคัดลอกไฟล์ได้หรือไม่ ดูข้อมูลเพิ่มเติมได้ที่ทำความเข้าใจความสามารถของไฟล์
    • ผู้ใช้ที่สร้างสำเนาจะเป็นเจ้าของไฟล์ที่คัดลอก ระบบจะไม่ทำซ้ำการตั้งค่าการแชร์อื่นๆ จากไฟล์ต้นฉบับ หากสร้างสำเนาใน โฟลเดอร์ที่แชร์ สำเนาจะรับค่าสิทธิ์ของโฟลเดอร์นั้น
    • การเป็นเจ้าของไฟล์ที่คัดลอกอาจเปลี่ยนแปลง และสำเนาอาจไม่รับช่วง การตั้งค่าการแชร์ของไฟล์ต้นฉบับ คุณอาจต้อง รีเซ็ตการตั้งค่าเหล่านี้
  • การจัดการไฟล์:

    • ระบบจะคัดลอกไฟล์บางไฟล์ไม่ได้ เช่น ทางลัดของบุคคลที่สาม
    • คุณจะคัดลอกไฟล์ไปยังโฟลเดอร์หลักได้เพียงโฟลเดอร์เดียวเท่านั้น ระบบไม่รองรับการระบุ รายการหลักหลายรายการ หากไม่ได้ระบุฟิลด์ parents ไฟล์จะรับค่าโฟลเดอร์หลักที่ค้นพบได้จากไฟล์ต้นฉบับ
    • แม้ว่าโฟลเดอร์จะเป็นไฟล์ประเภทหนึ่ง แต่คุณก็ไม่สามารถคัดลอกโฟลเดอร์ได้ แต่ให้สร้างโฟลเดอร์ปลายทางและตั้งค่าฟิลด์ parents ของ ไฟล์ที่มีอยู่เป็นโฟลเดอร์ปลายทาง จากนั้นคุณจะลบ โฟลเดอร์แหล่งที่มาต้นฉบับได้
    • หากไม่ได้ระบุชื่อไฟล์ใหม่ copy จะสร้างไฟล์ที่มีชื่อเดียวกับไฟล์ต้นฉบับ
    • การใช้ copy มากเกินไปอาจทำให้คุณใช้โควต้า Drive API เกินขีดจำกัด ดูข้อมูลเพิ่มเติมได้ที่โควต้าการใช้งาน

ขั้นตอนถัดไปที่คุณอาจลองทำมีดังนี้