我必须向 API 发出 POST 请求,此 API 返回我想在 Canvas 或 img 元素上显示的图像。问题是响应中出现了奇怪的字符,但在网络选项卡中,图像显示正确(下面的屏幕截图)
我已经尝试了 AJAX - Weird characters in img tag after request response 中提到的所有内容
我尝试转换为 base64
,使用 new Image()
加载,尝试转换为 blob,使用 FileReader()
加载>,但加载了空白图像。
如果我使用带有 new Image()
或 FileReader()
的一些静态图像 URL 而不是 POST 请求,它可以正常工作。如何呈现作为 POST 请求响应的图像?感谢您的帮助。
最佳答案
fotinakis 在 How to parse into base64 string the binary image from response? 中提供的答案成功了。
在自己发出 POST 请求时,responseType
必须设置为 arraybuffer
,稍后可以将其转换为 base64
。从二进制中获取 base64 是问题所在。 ajax成功回调默认返回binary,除非另外设置。
其他responseType
可以在https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType中找到.
虽然我还是不明白一件事。静态图像 URL(GET) 也返回二进制数据,这对 new Image()
没有任何问题,但如果我从 POST 请求成功回调传递相同的二进制数据,它就不起作用。
关于jquery - POST 请求的图像响应中的奇怪字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53857416/