POST请求的图像响应中有奇怪的字符

时间:2018-12-19 18:43:52

标签: jquery ajax image html5-canvas

我必须向API发出POST请求,并且此API返回要在画布或img元素上显示的图像。问题是响应中出现了奇怪的字符,但是在“网络”标签中,图像显示正确(下面的屏幕截图) ImageResponse_weird

Preview_network_tab

我已经尝试了AJAX - Weird characters in img tag after request response

中提到的所有内容

我尝试转换为base64,使用new Image()加载,尝试转换为blob,使用FileReader()加载,但是加载了空白图像。 blank_image

如果我使用一些带有new Image()FileReader()的静态图片URL,而不是POST请求,它可以正常工作。如何渲染来自POST请求的响应图像?任何帮助表示赞赏。

1 个答案:

答案 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请求成功回调中传递相同的二进制数据,它将无法正常工作。