Google Drive SDK通过JS从浏览器上传文件

问题描述 投票:0回答:1

v3的官方文档没有驱动文件上传(图像)的示例。 https://developers.google.com/drive/api/v3/manage-uploads

所以我有代码来创建一个文件夹,我需要将文件上传到这个文件夹。

function createFolder(){
      var parentId = '';//some parentId of a folder under which to create the new folder
      var fileMetadata = {
        'name' : 'New Folder',
        'mimeType' : 'application/vnd.google-apps.folder',
        'parents': [ROOT_FOLDER]
      };
        gapi.client.drive.files.create({
          resource: fileMetadata,
        }).then(function(response) {
          switch(response.status){
            case 200:
              var file = response.result;
              console.log('Created Folder Id: ', file);
              break;
            default:
              console.log('Error creating the folder, '+response);
              break;
            }
        });
      }

您能否发布一个如何将文件上传到drive API v3中的目录的示例?谢谢

javascript google-drive-sdk
1个回答
1
投票
  • 您想使用Drive API将文件上传到特定文件夹。
  • 运行问题中的脚本时,将创建新文件夹。 即,您已经可以使用Drive API。

如果我的理解是正确的,那么这个示例脚本怎么样?不幸的是,在我的环境中,使用gapi.client.drive.files.create()无法上传文件,同时可以创建新文件和新文件夹。我认为这可能是规范。所以我使用以下脚本作为解决方法。我认为有几种解决方案适合您的情况。所以请把它想象成其中之一。

Sample script:

let file = document.getElementsByName('upFile')[0].files[0]; // file

var metadata = {
    name: file.name,
    mimeType: file.type,
    parents: ['### folderId ###'], // Please set folderId here.
};
var 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', {
  method: 'POST',
  headers: new Headers({'Authorization': 'Bearer ' + gapi.auth.getToken().access_token}),
  body: form
}).then((res) => {
  return res.json();
}).then(function(val) {
  console.log(val);
});

Note:

  • 在此示例脚本中,它假设该文件由<input type="file" name='upFile'>输入。
  • 在此示例脚本中,可以上载大小小于5 MB的文件。如果您要上传超过5 MB的大文件,请使用可恢复的上传。从您的问题,我认为图像文件可能小于5 MB。所以我提出了这个脚本。

References:

© www.soinside.com 2019 - 2024. All rights reserved.