如何使用Drive API设置文件的元数据?

问题描述 投票:0回答:1

我正在寻找一种上传文件的解决方案具体的元数据!我试图将canDownload设置为false,但是结果没有任何反映!我想将文件设置为“所有人都可以访问”。这是我的代码:

const jwToken = new google.auth.JWT(
            token.client_email,
            null,
            token.private_key,
            ["https://www.googleapis.com/auth/drive"],
            null
        );

        jwToken.authorize((err : any) => {
            if (err) {
                console.log(err);
            } else {
                console.log("Authentication Success!");
            }
        });

 const metaData = {
            'name': filename,
            "shared": true,
            "capabilities" : {
                    "canDownload": false
            },
            parents: [folderId]
        };

        const media = {
            mimeType: 'Application/Pdf',
            body: fileSystem.createReadStream(pathSystem.join(path))
        };

        drive.files.create({
            auth     : jwToken,
            resource : metaData,
            media    : media,
            fields   : 'id'
        }, (err : any, file : any) => {
            if (err) {
                console.log("coming!!");

                throw err;
            } else {
                console.log("File Upload Successfully!");
            }
        });

javascript node.js typescript google-drive-api jwt
1个回答
0
投票
  • 您不想让用户下载创建的文件。
  • 您想与任何人作为读者分享。
  • 您想通过使用带有Node.js的googleapis实现此目的。
    • 您的脚本是打字稿。然后您构建它并使用Node.js运行它。
  • 您已经能够使用Drive API向Google Drive创建文件。

如果我的理解是正确的,那么这个答案怎么样?请认为这只是几个可能的答案之一。

修改点:

关于capabilities

[不幸的是,capabilities.canDownload的属性不是writable。通过这种方法,如何使用copyRequiresWriterPermission?使用此选项,文件被设置为“禁用评论者和查看者的下载,打印和复制选项”。

关于shared

shared的属性也不是writable。因此,当您想与任何人作为读者共享时,请使用权限方法:在Drive API中创建。

修改的脚本:

修改脚本后,请进行如下修改。

发件人:

const metaData = {
           'name': filename,
           "shared": true,
           "capabilities" : {
                   "canDownload": false
           },
           parents: [folderId]
       };

       const media = {
           mimeType: 'Application/Pdf',
           body: fileSystem.createReadStream(pathSystem.join(path))
       };

       drive.files.create({
           auth     : jwToken,
           resource : metaData,
           media    : media,
           fields   : 'id'
       }, (err : any, file : any) => {
           if (err) {
               console.log("coming!!");

               throw err;
           } else {
               console.log("File Upload Successfully!");
           }
       });

收件人:

const metaData = {
  name: filename,
  parents: [folderId],
  copyRequiresWriterPermission: true
};

const media = {
  mimeType: "application/pdf",
  body: fileSystem.createReadStream(pathSystem.join(path))
};
drive.files.create(
  {
    auth: jwToken,
    resource: metaData,
    media: media,
    fields: "id"
  },
  (err: any, file: any) => {
    if (err) {
      console.log(err);
      return;
    }
    const fileId = file.data.id;
    console.log(fileId);
    const body = {
      auth: jwToken,
      fileId: fileId,
      requestBody: {
        role: "reader",
        type: "anyone"
      }
    };
    drive.permissions.create(body, (err: any, res: any) => {
      if (err) {
        console.error(err);
        return;
      }
      console.log(res.data);
    });
  }
);
  • [为了不让用户下载上载的文件,copyRequiresWriterPermission: true被添加到文件的请求正文:创建。
  • 为了与任何人共享,{role: "reader", type: "anyone"}用于权限的请求正文:创建。

注意:

  • 在您的脚本中,使用了服务帐户。因此,如果您想在Google云端硬盘中查看上传的文件,请与您的Google帐户共享。这样,您可以使用浏览器查看它。请注意这一点。

参考:

如果我误解了你的问题,而这不是你想要的方向,我深表歉意。

© www.soinside.com 2019 - 2024. All rights reserved.