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

How to download the Blob received from the nodejs backend in reactjs to any Operating System in ReactJS?

我正在开发一个 ReactJS 网络应用程序,其中后端服务器在 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 是二进制数据最有效的通用编码),然后在客户端对其进行解码。