Google云端硬盘上传文件

时间:2020-07-24 01:48:04

标签: javascript google-drive-api fetch

我有使用xmlhttprequest的上传文件,但是我使用的是Service Worker,所以我改用fetch。

发送请求时出现401错误,但我知道我有访问令牌。

function uploadFile() {
  let accessToken = gapi.auth.getToken().access_token; // Google Drive API Access Token

  let fileContent = document.querySelector('#content').value; // As a sample, upload a text file.
  console.log('File Should Contain : ' + fileContent);
  let file = new Blob([fileContent], { type: 'application/text' });

  let metadata = {
    name: 'Background', // Filename
    mimeType: 'text/plain', // mimeType at Google Drive
    parents: ['root'], // Folder ID in Google Drive
  };

  let form = new FormData();
  form.append(
    'metadata',
    new Blob([JSON.stringify(metadata)], { type: 'application/json' })
  );
  form.append('file', file);

  fetch(
    'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=id',
    {
      method: 'POST',
      headers: new Headers({ Authorization: 'Bearer' + accessToken }),
      body: form,
    }
  )
    .then((res) => {
      return res.json();
    })
    .then(function (val) {
      console.log(val);
    });
}

有人知道我想念什么吗?

这是我收到的错误

error:
code: 401
errors: Array(1)
0: {domain: "global", reason: "authError", message: "Invalid Credentials", locationType: "header", location: "Authorization"}
length: 1
__proto__: Array(0)
message: "Invalid Credentials"
__proto__: Object
__proto__: Object

1 个答案:

答案 0 :(得分:2)

我认为您发布Invalid Credentials的原因是headers: new Headers({ Authorization: 'Bearer' + accessToken }),。请进行如下修改。

发件人:

headers: new Headers({ Authorization: 'Bearer' + accessToken }),

收件人:

headers: new Headers({ Authorization: 'Bearer ' + accessToken }),
  • 请像上面一样,在 之前添加Bearer的空格。
  • 我认为完成上述修改后,您的脚本即可上传文本文件。

参考: