我有以下控制器操作
[HttpGet]
public ActionResult Image()
{
FileContentResult result;
var bmp = SomeBitmap;
using (var memStream = new System.IO.MemoryStream())
{
bmp.Save(memStream, System.Drawing.Imaging.ImageFormat.Jpeg);
result = File(memStream.GetBuffer(), "image/jpeg");
}
return result;
}
我有以下ajax调用
function getImage() {
$.ajax({
url: '@Url.Action("Image", "Recordings")',
type: 'GET',
dataType: 'image/jpg',
cache: false,
success: function (data) {
Alert('never gets here');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Status: " + textStatus); alert("Error: " + errorThrown);
}
});
}
问题
错误返回parseError和'没有从文本转换为图像/ jpg'
我在这里错过了什么吗?
答案 0 :(得分:0)
我在MVC中创建了一个类似的调用。我认为在内存流上使用ToArray()将解决您的问题。我查阅了MSDN文档,并在备注部分中指出GetBuffer()将在缓冲区中返回额外的未使用字节。 ToArray()只返回实际写入缓冲区的数据。以下是MSDN链接http://msdn.microsoft.com/en-us/library/system.io.memorystream.getbuffer%28v=vs.110%29.aspx