我正在构建一个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从其下载的常用方法是什么?