Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将PDF作为Blob从Azure传递到节点以进行响应_Javascript_Node.js_Azure_Pdf - Fatal编程技术网

Javascript 将PDF作为Blob从Azure传递到节点以进行响应

Javascript 将PDF作为Blob从Azure传递到节点以进行响应,javascript,node.js,azure,pdf,Javascript,Node.js,Azure,Pdf,我试图通过节点后端获取存储在Azure Blob存储中的PDF,然后将该PDF文件提供给React前端。我将Microsofts@azure/storage blob与BlockBlobClient一起使用,但我在网上找到的每个示例都将readableStreamBody转换为字符串。blob的内容类型为application/pdf。我试着将readableStreamBody和纯输出传递到前端,但这些都会导致pdf的损坏。我还在线跟踪了文档,将其设置为字符串并将其传递给前端。这就产生了一个P

我试图通过节点后端获取存储在Azure Blob存储中的PDF,然后将该PDF文件提供给React前端。我将Microsofts
@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);
      });
  }

您的方法似乎有点过度设计,为什么不从后端返回SAS签名,让前端获取附加SAS的blob URL?@evilSnobu,我不知道这是一个选项,但我一定会尝试,谢谢您是否尝试使用方法下载pdf作为缓冲区
downloadToBuffer