为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 googledrive api 将文件上传到 googledrive?

如何使用 googledrive api 将文件上传到 googledrive?

慕后森 2023-10-20 16:33:24
我按照文档(https://developers.google.com/drive/api/v3/manage-uploads#http---single-request)中的操作进行操作,但它不起作用:         var fileMetadata = {            name: e.target.files[j].name,            parents: this.currentDirectoryId ? [this.currentDirectoryId] : []          }          var media = {            mimeType: e.target.files[j].type,            body: e.target.files[j]          }          window.gapi.client.drive.files.create({            resource: fileMetadata,            media: media,            fields: 'id, name, mimeType, createdTime'          }).then(res => console.log(res))文件已创建,但为空且名为“Untitled”,mimeType为“application/octet-stream”
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

问题和解决方法:

  • 当我测试时gapi.client.drive.files.create,似乎这种方法虽然可以用元数据创建新文件,但无法包含文件内容。因此,在这个答案中,为了通过包含文件元数据来上传文件,我想建议使用multipart/form-dataJavascript来上传文件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。请小心这一点。当您要上传较大文件时,请勾选断点续传。


查看完整回答
反对 回复 2023-10-20
  • 1 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信