当内容未知时,如何使用Javascript和Filesaver将二进制字符串保存到文件中?

时间:2019-05-08 11:44:51

标签: javascript download blob filesaver.js

我正在构建一个React应用。其中一个组件从GraphQL端点为小文件提取数据(作为我所理解的)为二进制字符串,其截断示例如下:

%PDF-1.3
%âãÏÓ

1 0 obj
<<
/Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R
>>
endobj

...
MORE CONTENT HERE
...

<<
/Size 11
/Root 1 0 R
/Info 10 0 R
>>

startxref
2714
%%EOF

在上面的示例中,从标头中可以很清楚地看出二进制字符串编码的文件是PDF。但是,此组件并不总是提取PDF文件-它可能是其他二进制字符串类型。

我希望他们将此字符串制成文件并可以下载给用户。

到目前为止,我使用file-saver想要执行以下操作:

  const fileDownload = new Blob([data.getCompanyDocument.documentData]);
  saveAs(fileDownload);

这不能正常工作。 new Blob似乎需要以下MIME类型:

  const fileDownload = new Blob([data.getCompanyDocument.documentData], {
    type: "application/pdf"
  });
  saveAs(fileDownload);

这确实有效。

Blob是否可以自动从字符串标题中提取MIME类型?

如果我觉得不对,那么采用上述二进制字符串并创建文件以供用户通过客户端Javascript从其下载的常用方法是什么?

0 个答案:

没有答案