如何将从reactjs中的nodejs后端收到的Blob下载到reactjs中的任何操作系统



我正在开发一个ReactJS web-app,其中后端服务器在API响应中发送blob对象。在下载文件时,问题是文件被下载了,但文件的内容只是[object object]。后端发送的blob是这样的:

{ 
success: true,
message: 'Blob retrived successfully',
blob:
Blob {
[Symbol(type)]: 'text/html',
[Symbol(buffer)]:
<Buffer 0a 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 3e 0a 3c 68 74 6d 6c 20 6c 61 6e 67 3d 22 65 6e 22 20 78 6d 6c 3a 6c 61 6e 67 3d 22 65 6e 22 20 78 6d 6c ... > },
name: 'newfile123.html' 
}

这是我在ReactJS:的前端尝试过的

const blob = new Blob([response.data.blob]);
const link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.setAttribute('download', name);
document.body.appendChild(link);
link.click();
link.parentNode.removeChild(link);

link.setAttribute中的名称是在访问API之前提取的,因此没有问题。

您不能在JSON API响应中直接发送Blob(或任何其他二进制数据(。

您需要在服务器上以某种方式对其进行编码(base64是二进制数据最有效的通用编码(,然后在客户端上对其进行解码。

最新更新