bel*_*hem 6 javascript http angular
我正在使用 Angular 4,我正在使用返回内容类型为:img/png 的图像的 api
\n\nhttp方法:
\n\nreturn this.http.get(\'URL\', this.options)\n .map((res: Response) => res.text());\n// can be also : res.arrayBuffer() // res.blob()\n
Run Code Online (Sandbox Code Playgroud)\n\nhttp get 响应(以文本形式和在 ARC 中)如下所示:
\n\n\xef\xbf\xbdPNG IHDR\xef\xbf\xbd\xef\xbf\xbd"\xcd\xb9\xef\xbf\xbdW\xef\xbf\xbdW\xef\xbf\xbd\xef\xbf\xbdz\xd8\xbd\xef\xbf\xbd|+q%\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbdY\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdM\xe7\xbc\xa5{\xef\xbf\xbd\xef\xbf\xbdU\xef\xbf\xbd\xef\xbf\xbdH\xef\xbf\xbd\xdd\x8f)L\xef\xbf\xbdL\xef\xbf\xbd~\xef\xbf\xbd6/\'6Q\xd7\x8c\xef\xbf\xbd}\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd:\xef\xbf\xbd\xef\xbf\xbdl\'\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbdR\xef\xbf\xbdL\xef\xbf\xbd&\xef\xbf\xbd~Lw?\xef\xbf\xbd\n
Run Code Online (Sandbox Code Playgroud)\n\n我尝试了不同的方法来转换它并显示它:
\n\n获取blob形式的响应并使用以下命令将其转换:
\n\n new Uint8Array(response)\n
Run Code Online (Sandbox Code Playgroud)将图像获取为arrayBuffer,然后使用以下方法将其转换:
\n\n arrayBufferToBase64(buffer) {\n let binary = \'\';\n let bytes = new Uint8Array(buffer);\n let len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n }\n
Run Code Online (Sandbox Code Playgroud)它们都不适用于我,并且图像未显示。
\n\n我的问题是,响应的真正格式是什么(blob、arraybuffer 或文本)以及如何显示它?
\nRus*_*ust 12
您可以使用fetch
API 来实现此目的。
我们首先将响应作为blob
. 然后你可以使用它URL.createObjectURL()
来创建一个文件对象。
fetch(URL)
.then(res=>{return res.blob()})
.then(blob=>{
var img = URL.createObjectURL(blob);
// Do whatever with the img
document.getElementById('img').setAttribute('src', img);
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18685 次 |
最近记录: |