Передайте PDF как Blob из Azure в узел для реакции - PullRequest
1 голос
/ 04 апреля 2020

Я пытаюсь получить PDF-файл, хранящийся в Azure Хранилище BLOB-объектов, через внутренний серверный узел, а затем передать этот файл PDF в интерфейс React. Я использую Microsoft @azure/storage-blob с BlockBlobClient, но каждый пример, который я нахожу онлайн, преобразует readableStreamBody в строку. BLOB-объект имеет тип содержимого application/pdf. Я пытался передать readableStreamBody и чистый вывод во внешний интерфейс, но это привело к поломке PDF-файлов. Я также следил за документацией онлайн, сделал ее строкой и передал ее внешнему интерфейсу. Это дало PDF-файл, который открывался и содержал надлежащее количество страниц, но был совершенно пустым.

Node.js Код на внутренней стороне

   app.get('/api/file/:company/:file', (req, res) => {
  const containerClient = blobServiceClient.getContainerClient(req.params.company);
  const blockBlobClient = containerClient.getBlockBlobClient(req.params.file);
  blockBlobClient.download(0)
    .then(blob => streamToString(blob.readableStreamBody))
    .then(response => res.send(response))
});

Код передней части

getFileBlob = (company,file) => {
    axios(`/api/file/${company}/${file}`, { method: 'GET', responseType: 'blob'})
      .then(response => {
        const file = new Blob(
          [response.data],
          {type: 'application/pdf'});
        const fileURL = URL.createObjectURL(file);
        window.open(fileURL);
      })
      .catch(error => {
        console.log(error);
      });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...