我正在使用googleapis
将不同的文件上传到Google云端硬盘。
1.用户通过我的REST API(我使用的是NodeJS)提供文档和信息。
- REST API创建将包含文档的目录(如果该目录尚不存在)。
- REST API将文档上载到该目录。
驱动器的结构为:
/root/documents/$type/$new_document
其中$type
是用户提供的字段之一,$new_document
是用户提供的文档。
我的连接方式:
oauth2Client.setCredentials({ refresh_token: REFRESH_TOKEN });
drive_instance = google.drive({
version: 'v3',
auth: oauth2Client,
});
我想出了如何将文档上传到谷歌驱动器的根文件夹:
}
try {
const response = await drive.files.create({
requestBody: {
name: file.name,
mimeType: file.mimetype,
},
media: {
mimeType: file.mimetype,
body: file.data,
},
});
console.log(response.data);
} catch (error) {
console.log(error.message);
}
我纠结的是:
1.如果目录/root/documents/$type
不存在,如何创建它?
1.如何将$new_document
上传到/root/documents/$type
?
对于第二个问题,我知道docs提供了一个包含所有文件夹ID的parents[]
选项。但是,我如何才能获得/root/documents/$type
的文件夹ID?是否有某种方法可以合并这些步骤(例如,mkdir -p
用于目录或创建目录将返回目录的ID)。
2条答案
按热度按时间q43xntqr1#
drive.files.list()
方法找到所需的文件夹**您需要设置过滤器,例如:
在requestBody中添加
'q': "..."
以搜索所需内容使用
"name = 'Some Folder Name'"
按名称搜索使用
"mimeType = 'application/vnd.google-apps.folder'"
来只搜索文件夹因此,通过
and
组合:'q': "name = 'Some Folder Name' and mimeType = 'application/vnd.google-apps.folder'"
以查找具有所选名称的所有文件夹关于
handleSearchResult()
或createFolder
:files[i].parents
。这就是为什么我添加了parents
在'fields': "files(id, name, parents)"
。https://developers.google.com/drive/api/v3/reference/files'parents contain "..."''
https://developers.google.com/drive/api/v3/search-filesid
。之后,创建第二个文件夹,并添加在requestBodyparentId
等于第一个文件夹id
。等等...顺便说一句,你可以使用几乎相同的逻辑来搜索。示例:
parents
的文件**您应该在
requestBody
中添加parents = ['id-of-folder']
在Google Drive API - Files: create中阅读更多内容
我希望它至少能帮上一点忙:)坚持下去!
mrphzbgm2#
您可以使用以下方法上载文件夹中的文件夹
1.你应该有你想在其中存储新文件夹的文件夹的id**(可以使用nodejs API或者通过打开文件夹并查看url中last /之后的字符来提取)**
1.使用为google驱动器中的文件夹保留的特殊mimetype**(application/vnd.google-apps.folder)**
你甚至可以很容易地创建一个递归上传文件夹功能相结合的文件上传和文件夹上传,可以上传整个文件夹