通过Javascript从MVC Controller加载Jpeg图像

时间:2014-11-13 05:37:53

标签: javascript asp.net-mvc

我有以下控制器操作

  [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'

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我在MVC中创建了一个类似的调用。我认为在内存流上使用ToArray()将解决您的问题。我查阅了MSDN文档,并在备注部分中指出GetBuffer()将在缓冲区中返回额外的未使用字节。 ToArray()只返回实际写入缓冲区的数据。以下是MSDN链接http://msdn.microsoft.com/en-us/library/system.io.memorystream.getbuffer%28v=vs.110%29.aspx