将二进制/ unicode字符串转换为图像

时间:2018-04-20 06:32:07

标签: javascript ajax

我正在使用库来使用OAuth和代理从salesforce接收附件(图片)。没有库(和代理),我可以使用XHR,但我必须使用库,因为我需要代理。

在chrome调试器中,我可以看到图像被正常下载,但我无法在我的代码中使用它。数据如下:

enter image description here

到目前为止我尝试过的方法:

  1. btoa(unescape(encodeURIComponent(file.body))); - 生成无效的base64。使用在线工具解码它会给我带回相同的字符串。

  2. escape(file.body) - 将其用作base64也不起作用。

  3. 转换为blob。 var blob = new Blob([file.body], {type : "image/png"}); urlCreator.createObjectURL(blob); 它指向的URL不显示任何内容,如果我删除{type : "image/png"},则url指向显示相同二进制字符串的页面。

2 个答案:

答案 0 :(得分:0)

我会创建一个<img />元素,将其src属性与您收到的图像数据相等。现在你有了这张照片。

如果您要将其解压缩或将其转换为PNG,我会应用此另一个answer流程。

答案 1 :(得分:0)

长话短说,这看起来像是有人用readAsText()读取图像,该图像将(“解释”)二进制代码转换为utf8而不是utf16。您需要让服务器以理想的状态以arraybuffer或blob格式,甚至以base64格式返回数据,这些保留二进制文件。

带有摘要的长版。 (代码段中的那些问号符号会显示丢失的信息,请将其与不是utf16中的问号的二进制文件进行比较): https://stackoverflow.com/a/56523118/2962797