gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:40 25 4
gpt4 key购买 nike

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

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!");
}
});

最佳答案

  • 您不想让用户下载创建的文件。
  • 您想与作为读者的任何人分享。
  • 您希望使用 googleapis 和 Node.js 来实现此目的。
    • 您的脚本是 typescript 。然后您构建它并使用 Node.js 运行它。
  • 您已经能够使用 Drive API 在 Google 云端硬盘中创建文件。

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

修改点:

关于功能:

不幸的是,capability.canDownload 的属性不可写。那么,作为一种方法,使用copyRequiresWriterPermission怎么样?使用此功能,该文件被设置为“禁用评论者和查看者下载、打印和复制的选项”。

关于共享:

shared 的属性也是不可可写的。因此,当您想以读者身份与任何人分享时,请使用“权限:在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);
});
}
);
  • 为了不让用户下载上传的文件,在Files: create的请求体中添加了copyRequiresWriterPermission: true
  • 为了与任何人共享,{role: "reader", type: "anyone"} 用于 Permissions: create 的请求正文。

注意:

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

引用文献:

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

关于javascript - 如何使用Drive API设置文件的元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59436855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com