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

我正在使用带有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 ? } 

这是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 ? }); 

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

  

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

 $('#ImageLocation').html(''); 

Web浏览器将自动执行为映像创建HTTP请求的工作,从而为您节省所有复杂性。

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

 context.Response.ContentType = "image/png"; 

资源:

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

…和…

使用ashx Handler显示图像