我必须向API发出POST请求,并且此API返回要在画布或img元素上显示的图像。问题是响应中出现了奇怪的字符,但是在“网络”标签中,图像显示正确(下面的屏幕截图)
我已经尝试了AJAX - Weird characters in img tag after request response
中提到的所有内容我尝试转换为base64
,使用new Image()
加载,尝试转换为blob,使用FileReader()
加载,但是加载了空白图像。
如果我使用一些带有new Image()
或FileReader()
的静态图片URL,而不是POST请求,它可以正常工作。如何渲染来自POST请求的响应图像?任何帮助表示赞赏。
答案 0 :(得分:0)
fotinakis 在How to parse into base64 string the binary image from response?中提供的答案有效。
在发出POST请求时,必须将responseType
设置为arraybuffer
,然后才能将其转换为base64
。问题是从二进制文件获取base64。除非另行设置,否则默认情况下,ajax的成功回调将返回二进制。
其他responseType
可以在https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType中找到。
尽管如此,我还是一无所知。静态图片URL(GET)还返回二进制数据,new Image()
没有问题,但是如果我从POST请求成功回调中传递相同的二进制数据,它将无法正常工作。