Google Drive SDK Загрузить файл из браузера через JS - PullRequest
0 голосов
/ 11 марта 2019

В официальной документации 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? Спасибо

1 Ответ

1 голос
/ 11 марта 2019
  • Вы хотите загрузить файл в определенную папку с помощью Drive API.
  • Когда ваш скрипт в вашем вопросе запущен, создается новая папка.
    • А именно, вы уже можете использовать Drive API.

Если мое понимание верно, как насчет этого примера сценария?К сожалению, в моей среде файлы не могут быть загружены с помощью gapi.client.drive.files.create(), пока можно создать новый файл и новую папку.Я думал, что это может быть спецификацией.Поэтому я использовал следующий сценарий в качестве обходного пути.Я думаю, что есть несколько решений для вашей ситуации.Поэтому, пожалуйста, подумайте об этом как об одном из них.

Пример сценария:

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);
});

Примечание:

  • В этом примере сценария предполагается, что файлвводится <input type="file" name='upFile'>.
  • . В этом примере сценария можно загрузить файл размером менее 5 МБ.Если вы хотите загрузить большой файл размером более 5 МБ, используйте возобновляемую загрузку.На ваш вопрос, я подумал, что файл изображения может быть менее 5 МБ.Поэтому я предложил этот скрипт.

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...