пытается загрузить файл из общей папки azure с помощью приложения реакции - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь загрузить файл из общей папки azure с помощью приложения реакции. Я подключаюсь прекрасно, создаю файловый клиент и загружаю его, используя , этот метод

. в способе документации, поэтому я пытаюсь перейти к обещанию получить содержимое файла, чтобы загрузить их , используя это

объекты, которые я возвращаю, находятся ниже в журнале консоли.

{
  "lastModified": "2020-04-09T21:01:45.000Z",
  "metadata": {},
  "contentType": "application/x-zip-compressed",
  "requestId": "xxx-401a-004e-193c-xxx",
  "version": "2019-07-07",
  "isServerEncrypted": true,
  "fileAttributes": "Archive",
  "fileCreatedOn": "2020-04-09T21:01:45.148Z",
  "fileLastWriteOn": "2020-04-09T21:01:45.148Z",
  "fileChangeOn": "2020-04-09T21:01:45.148Z",
  "filePermissionKey": "xxx*xxx",
  "fileId": "xxxxx",
  "fileParentId": "xxxxx",
  "leaseState": "available",
  "leaseStatus": "unlocked",
  "blobBody": {}
}

...

blobBody: Promise { "fulfilled" }
​​
<state>: "fulfilled"
​​
<value>: Blob
​​​
size: 1960118
​​​
type: "application/x-zip-compressed"
​​​
<prototype>: BlobPrototype
​​​​
arrayBuffer: function arrayBuffer()
​​​​
constructor: function ()
​​​​
size: 
​​​​
slice: function slice()
​​​​
stream: function stream()
​​​​
text: function text()

Я пытался вызвать функции stream или arrayBuffer, но не могу получить доступ к чему-либо внутри обещания

console.log(`downloading file: ${fileName}`)
const fileClient = this.state.doneDirClient.getFileClient(fileName)
const file = await fileClient.download()
console.log(file)
console.log(file.blobBody.Blob)

последняя строка возвращает undefined

редактировать с измененным кодом, который работал:

  async download(fileName: string) {
    const fileClient = this.state.doneDirClient.getFileClient(fileName)
    const file = await fileClient.download()
    Promise.resolve(file.blobBody).then(function (value) {
      fileDownload(value, fileName)
    });
  }

Как я могу получить содержимое файла?

1 Ответ

1 голос
/ 17 апреля 2020

Если вы посмотрите на определение FileDownloadResponse, вы заметите, что параметр blobBody по сути является Promise.

type FileDownloadResponse = FileDownloadHeaders & { _response: Object, blobBody: Promise<Blob>, readableStreamBody: NodeJS.ReadableStream }

Как только вы выполните это обещание, вы должны получить Blob.

...