这是我的功能上传文件到谷歌驱动器:
async processFiles(files) {
const formData = new FormData()
formData.append("file", files[0])
formData.append("name", files[0].name)
formData.append("parents", this.currentFolder.folderId)
axios
.post("https://www.googleapis.com/upload/drive/v3/files", formData, {
headers: {
Authorization: `Bearer ${this.accessToken}`,
"Content-Type": "multipart/form-data",
},
})
.then((response) => {
console.log(response)
})
.catch((error) => {
console.log(error)
})
},
文件正在上传到通用Google Drive,而不是特定的文件夹(this. currentfolder.folderId)。我在这里做错了什么?
我已经尝试了一些功能,这是唯一一个上传文件到谷歌驱动器。
2条答案
按热度按时间bvjveswy1#
在您的脚本中,进行以下修改如何?
修改的脚本:
files[0]
将上载到Google云端硬盘,文件元数据为{ name: files[0].name, parents: [this.currentFolder.folderId] }
。multipart/form-data
与new FormData()
运行请求时,不需要设置请求头的内容类型,包含边界的内容类型是自动创建的。formData.append('metadata', new Blob([JSON.stringify({ name: files[0].name, parents: [this.currentFolder.folderId] })], { type: 'application/json' }));
。注:
files[0]
是有效的文件对象,并且您的访问令牌可以用于使用Drive API将文件上传到Google云端硬盘。参考文献:
vhmi4jdf2#
parents
是一个列表参数,因此您应该在表单字段中提供。就像这样:
formData.append("parents[]", this.currentFolder.folderId)