Web Api 2 - 如何从HTTPGET返回映像(来自Azure存储的MemoryStream)而不保存到磁盘?

Ter*_*ård 8 c# memorystream http-get angularjs asp.net-web-api2

我正在使用带有C#和Azure的Web Api 2,以及如何返回图像(从Memorystream基础)以便在页面上显示的问题...

这是我的Controller HTTPGET

[Route("api/PhotoSubmit/GetPhoto/{id}")]
    [HttpGet]
    public HttpResponseMessage GetPhotoById(int id)
    {
        StorageServices storage = new StorageServices();
        MemoryStream ms = storage.DownloadBlob(id);
        // return what ?
    }
Run Code Online (Sandbox Code Playgroud)

这是servicecall的开头:

$http({
            method: 'GET',
            url: 'api/PhotoSubmit/GetPhoto/' + $routeParams.id,
            accept: 'application/json'
        })
        .success(function(result) {
        // How do i handle the result and what HTML should i use ? <img ?
    });
Run Code Online (Sandbox Code Playgroud)

Ty *_* H. 8

从客户端,您不需要使用$ http.您可以使用普通的旧HTML简化该过程...

<img src="/api/PhotoSubmit/GetPhoto/2232" />
Run Code Online (Sandbox Code Playgroud)

对于动态图像,使用像这样的JQuery ......

$('#ImageLocation').html('<img src="/api/PhotoSubmit/GetPhoto/' + intID + '" />');
Run Code Online (Sandbox Code Playgroud)

Web浏览器将自动完成为图像发出HTTP请求的工作,从而为您节省所有复杂性.

在服务器端,您可以使用这些过程加载文件并将其流式传输到客户端.服务器代码返回正确的MIME类型非常重要,例如......

context.Response.ContentType = "image/png";
Run Code Online (Sandbox Code Playgroud)

资源:

ASP .Net Web API将图像下载为二进制文件

...和...

使用ashx Handler显示图像