1

我一直在尝试显示和下载从 API 响应中获得的二进制(八位字节流)文件。

我尝试将文件转换为 base64 并将其显示在 href 和 iframe 中,并直接使用其 MINE TYPE (Application/pdf) 和默认类型 (Application/octet-stream) 显示文件,但上述方法均无效。

data: "PDF-1.7
%����
301 0 obj
<</Linearized 1/L 366634/O 303/E 356306/N 1/T 366300/H [ 900 415]>>
endobj

462 0 obj
<</DecodeParms<</Columns 5/Predictor         
12>>/Filter/FlateDecode/ID[<C63CE28E0F04F6408738C45693E2B214> 
<EE45F3FA04D9F349A93DBCE0FF820FE0>]/Index[301 176]/Info 300 0 R/Length 
339/Prev 366301/Root 302 0 R/Size 477/Type/XRef/W[1 3 1]>>stream
hެ��/DA������-�V�,�(44J�F����F$�V!*�(6!����D)�/ 
����uZ�h�[8'��� 
䗓;g�ޙ�bL�Xc�&gt;����ͫS�d^Új[uO�q�ur�֏ʊx�m���f^x-n��ln�R$.��
������=��?c�9��P㮈 
�(�S��q��)�`��&y�ρK�a�֎�O�;��    �r��KH.....  

content-length: "366634"
content-type: "application/octet-stream"

当我尝试使用 innerHTML 在窗口中显示文件时,我得到“加载 pdf 文档时出错”,图像文件也是如此。

有没有办法将文件正确转换为 base64 并显示/下载它(我之前做过,但 API 响应是一个 base64 文件),或者只是在 octet-stream 中显示文件。

4

1 回答 1

0

您的选择:

  • srciframe 设置为您从中获取 PDF 数据的 URL
  • 将文件转换为data:方案 URL 并将其插入srciframe 的
  • 找一个用于渲染PDF文件的JS库

您不能从 PDF 文件中获取数据并告诉浏览器将其视为 HTML(这就是将其注入其中innerHTML的作用——在属性名称中有关于它的线索)。PDF 不是 HTML。

于 2019-09-03T09:52:19.837 回答