API Google Диска (Javascript) - Не удается загрузить содержимое PDF-файла с Google Диска - PullRequest
0 голосов
/ 07 января 2020

У меня проблема при попытке загрузить файл PDF с Google Диска с помощью средства выбора файлов. Мой код работает, как и ожидалось, с изображениями и видео, но не с файлами PDF. При загрузке изображения через API https://www.googleapis.com/drive/v3/files/' + file.id + '?alt=media'; я получаю следующий ответ:

name: "Social-Facebook-Post-Cool-Down.png"
lastModified: 1578397749873
lastModifiedDate: Tue Jan 07 2020 12:49:09 GMT+0100 (Central European Standard Time) {}
webkitRelativePath: ""
size: 317
type: ""
url: "blob:https://localhost:8080/647e4d15-d090-4c0f-aa3e-bd7481f11043"

Но при вызове того же URL-адреса с идентификатором файла PDF я не получаю свойство get url и, следовательно, не файл содержание. Таким образом, при открытии загруженного файла PDF он просто пустой / пустой. Что мне здесь не хватает?

Это мой код для загрузки содержимого файла:

for (let file of files) {
  var xhr = new XMLHttpRequest();
  var getUrl = 'https://www.googleapis.com/drive/v3/files/' + file.id + '?alt=media';
  xhr.open("GET", getUrl, true);
  xhr.setRequestHeader('Authorization', 'Bearer ' + this.googleDriveToken);
  xhr.responseType = 'arraybuffer';
  xhr.onload = () => {
    var bytes = new Uint8Array(xhr.response);
    let fileObj = new File([bytes], file.name);
    googleFiles.push(fileObj);
    counter++;
    if (counter == files.length) {
      this.$emit('filesAdded', googleFiles);
    }
  }
  xhr.send();
}

Спасибо.

1 Ответ

0 голосов
/ 07 января 2020

Как выяснил OP, создание большого двоичного объекта с байтами из файла и добавление их в объект File устранило проблему:

var blob = new Blob([bytes]); 
fileObj.url = blob;

Ссылка на документацию Drive API :

Blob

Файл, содержащий текстовый или двоичный контент, например изображения, видео и PDF.

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