js接收到后台返回的数据是base64的图片乱码

使用ajax向后台发送请求,后台返回的是base64的图片,但是控制台打印出来是一堆乱码,该如何解析呢,想把这一段返回的base64直接放到img的src中

clipboard.png
这是ajax请求,返回的是这样的乱码:

clipboard.png
前端接收到这个应该怎么解析呢

阅读 16.1k
7 个回答

根据log出的内容来看,后台返回的应该是二进制流,全场乱字符+JFIF标记,应该能确定是个JPEG文件的二进制流,而不是base64。所以放段处理二进制流显示的代码到回调里应该就可以了:

var img = document.createElement('img');
img.src = window.URL.createObjectURL(data);
img.height = 60;
img.onload = function() {
    window.URL.revokeObjectURL(this.src);
}
body.appendChild(img);

你这个就是图片对字节流啊,如果要直接设置显示需要将你对data base64后设置到img到src里面,参考:

<img src="data:image/jpg;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="/>

data:image/jpg 根据你图片类型设置。

你的图片地址对应的明明是个JPEG的图片二进制流啊,不是base64字符串,你直接把这个URL设置到img标签上就可以

使用ajax获取的数据放进去就会出问题,但是把接口地址的url直接放在img的src就可以
$("#imgCode").attr("src", url);
我请求的时候是get方法
另外用ajax用原生的方法请求是可以的

你确定是 base64的?
看样子,应该是二进制的。

兄弟,我在调微信返回小程序二维码的时候也遇到了这个问题,但是按照上面的说法没解决,不知道你是怎么解决的呢?

新手上路,请多包涵

楼主 我也遇到了跟你一样的问题 按照上面的步骤 一直报错 也不知道自己哪里写错了 那种乱码是二进制码 那前端怎么转化为base64呢

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏