【问题标题】:return an image using ASP.NET Web API and display it?使用 ASP.NET Web API 返回图像并显示它?
【发布时间】:2017-05-22 01:30:07
【问题描述】:

web api 操作:

byte[] bytes = System.IO.File
                        .ReadAllBytes(
                          HttpContext.Current.Server.MapPath("~/Images/orderedList1.png"));
var result_ = new HttpResponseMessage(HttpStatusCode.OK);
result_.Content = new ByteArrayContent(bytes);
result_.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
return result_;

Ajax call

respond - data in console

【问题讨论】:

    标签: c# asp.net-mvc asp.net-web-api asp.net-web-api2


    【解决方案1】:

    您不需要对此操作进行 AJAX 调用。只需放置一个<img> 标记并将其 src 属性指向您的 Web API 端点:

    <img src="api/account/GetImageByAccountId/12345" alt="" />
    

    或者如果你事先不知道accountId,你可以动态构造这个img标签并使用javascript将它注入到DOM中:

    var id = '12345';
    $('#someDivId').prepend('<img src="api/account/GetImageByAccountId/' + id + '" alt="" />');
    

    并且图像将被添加到您需要在 DOM 中拥有的容器中:

    <div id="someDivId"></div>
    

    【讨论】:

    • 感谢您的回复,ajax 调用有什么办法吗?并显示响应数据?
    • 但是你为什么要对返回二进制垃圾的端点进行 AJAX 调用呢?这就是 HTML 规范中图像标签的设计目的。
    • 因为我需要实现一个媒体类型格式化程序来支持 jpegs 和 pngs 的内容协商
    • 好的,但这与 AJAX 和 &lt;img&gt; 标签有什么关系?只要您的服务器指定正确的 Content-Type 响应标头,img 标记将愉快地显示 JPEG 和 PNG。
    • 你是对的(:我是 web api 的新手,所以我真的不知道什么是显示图像的最佳方式。
    猜你喜欢
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多