我正在寻找一种解决方案来上传文件 具体元数据!我尝试将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/