jQuery ajax从webapi 2加载二进制图像

jQuery ajax从webapi 2加载二进制图像,jquery,ajax,asp.net-web-api,Jquery,Ajax,Asp.net Web Api,我有一个问题,当我调用API获取图像时,我得到的是二进制图像。我想是的 ImageConverter imageConverter = new ImageConverter(); byte[] resourceByteArray = (byte[])imageConverter.ConvertTo(_Obj.GetImage(), typeof(byte[])); MemoryStream dataStream = new MemoryStream(resourceByteArray); r

我有一个问题,当我调用API获取图像时,我得到的是二进制图像。我想是的

ImageConverter imageConverter = new ImageConverter();

byte[] resourceByteArray = (byte[])imageConverter.ConvertTo(_Obj.GetImage(), typeof(byte[]));

MemoryStream dataStream = new MemoryStream(resourceByteArray);
response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(dataStream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/" + parameters.ImageFormat);
前端代码

$("#formoid").submit(function (event) {

/* stop form from submitting normally */
event.preventDefault();

/* get some values from elements on the page: */
var $form = $(this),
url = $form.attr('action');
/* Send the data using post */
var posting = $(this).serialize();

$.ajax({
type: "POST",
url: url,
data: posting
}).done(function (data) {
$('#output').html('<img src="data:image/PNG;base64' + data + '" />');
});
});
$(“#formoid”).submit(函数(事件){
/*阻止表单正常提交*/
event.preventDefault();
/*从页面上的元素获取一些值:*/
var$form=$(此),
url=$form.attr('action');
/*使用post发送数据*/
var posting=$(this.serialize();
$.ajax({
类型:“POST”,
url:url,
数据:过账
}).完成(功能(数据){
$('#output').html('');
});
});
最终结果是:

<img src="data:image/PNG;base64�PNG

���
IHDR�����@��������sRGB�������gAMA�����a���   pHYs�������o�d����IDATx^���W��}�}��s�{�s���g�t��epww��N ��I �  �@�@�]�'F���o���ݫv�������&lt;�g�k������Uk��k���P��+��eˢT�R��`��%J�p�¾��\��`pGƪ\k0\i��!%0���`�

为了使用
base64
部分是因为您需要返回
base64
字符串,而不是字节数组,因此您需要使用:
convert.tobase64字符串(缓冲区)

因此,以您的代码为例:

ImageConverter imageConverter = new ImageConverter();
byte[] resourceByteArray = (byte[])imageConverter.ConvertTo(_Obj.GetImage(), typeof(byte[]));
您的WebApi方法应返回:

return Convert.ToBase64String(resourceByteArray);

我对asp和.NET不太了解,但在将其放入响应之前,您可能应该使用方法将二进制数组转换为文本。

看起来像是Ajax响应数据的编码问题。尝试解析json并尝试将其更改为合适的格式,如Base64等。您也可以从服务器端处理此问题。