1 回答
TA贡献1802条经验 获得超5个赞
问题和解决方法:
当我测试时
gapi.client.drive.files.create
,似乎这种方法虽然可以用元数据创建新文件,但无法包含文件内容。因此,在这个答案中,为了通过包含文件元数据来上传文件,我想建议使用multipart/form-data
Javascript来上传文件fetch
。在这种情况下,访问令牌由 检索gapi.auth.getToken().access_token
。不幸的是,从你的脚本中,我无法理解
e.target
. 因此,在这个示例脚本中,我想提出用于上传文件的示例脚本,该文件是从输入标记中检索到的,并带有元数据。
示例脚本:
HTML 端:
<input type="file" id="files" name="file">
JavaScript 方面:
const files = document.getElementById("files").files;
const file = files[0];
const fr = new FileReader();
fr.readAsArrayBuffer(file);
fr.onload = (f) => {
const fileMetadata = {
name: file.name,
parents: this.currentDirectoryId ? [this.currentDirectoryId] : [] // This is from your script.
}
const form = new FormData();
form.append('metadata', new Blob([JSON.stringify(fileMetadata)], {type: 'application/json'}));
form.append('file', new Blob([new Uint8Array(f.target.result)], {type: file.type}));
fetch('https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart', {
method: 'POST',
headers: new Headers({'Authorization': 'Bearer ' + gapi.auth.getToken().access_token}),
body: form
}).then(res => res.json()).then(res => console.log(res));
};
在此脚本中,从标签检索的文件上传
input
到 Google Drive,扩展名为multipart/form-data
.
笔记:
在此脚本中,它假设您的授权脚本可用于将文件上传到 Google Drive。请小心这一点。
在此答案中,作为示例脚本,文件上传为
uploadType=multipart
. 在本例中,最大文件大小为 5 MB。请小心这一点。当您要上传较大文件时,请勾选断点续传。
添加回答
举报