Пустые изображения и PDF-файлы, загруженные из Dropbox - PullRequest
0 голосов
/ 28 мая 2018

У меня проблема при загрузке файлов из моего Dropbox.
При использовании типа 'text / csv' я могу загружать и просматривать текстовые файлы.
Изменение типа на 'image / jpeg' или 'application /PDF и скачать тип файла дает мне пустой файл.

Я на правильном пути или есть другой способ сделать это?

main.service.ts

downloadFile(id) {
  const headers = new Headers();
  headers.append('Authorization', 'Bearer ' + this.accessToken);
  const path = `{"path": "${id}"}`;
  headers.append('Dropbox-API-Arg', path);
  return this.http.post('https://content.dropboxapi.com/2/files/download', 
  null, { headers: headers });
}

main.component.ts

downloadFileBlob(data: any, name) {
  const blob = new Blob([data], { type: 'image/jpeg' });
  const url = window.URL.createObjectURL(blob);
  window.open(url);
}

saveFile(id, name) {
  this.dropbox.downloadFile(id).subscribe((data: any) => {
  this.downloadFileBlob(data._body, name); });
}

1 Ответ

0 голосов
/ 28 мая 2018

Оказывается, я поступил неправильно.
В Dropbox Github есть пример использования sharedGetSharedLinkFile, который работает примерно так же, как filesDownload.
Замените shareGetSharedLinkFile на filesDownload и укажите путь к файлу вместо URL.,

Примерно так:

function downloadFile() {
  var ACCESS_TOKEN = (<HTMLInputElement> document.getElementById('access- 
  token')).value;
  var SHARED_LINK = (<HTMLInputElement> document.getElementById('shared- 
  link')).value;
  var dbx = new Dropbox.Dropbox({ accessToken: ACCESS_TOKEN });
  dbx.filesDownload({path: SHARED_LINK})
 .then(function(data) {
  var downloadUrl = URL.createObjectURL((<any> data).fileBlob);
  var downloadButton = document.createElement('a');
  downloadButton.setAttribute('href', downloadUrl);
  downloadButton.setAttribute('download', data.name);
  downloadButton.setAttribute('class', 'button');
  downloadButton.innerText = 'Download: ' + data.name;
  document.getElementById('results').appendChild(downloadButton);
});
}
...