c# - 如何将位图返回给浏览器 WebApi

标签 c# javascript image asp.net-web-api

我正在使用 JavaScript 从客户端已加载的文档向服务器“WebApi”发出请求。

当服务器收到请求时,它会动态构建位图并将其作为 .png 返回给客户端。

当我在客户端读取响应时,我从 .ajax 请求的数据部分返回的是一个空字符串。

如何使用 WebApi 从服务器读取和请求图像,然后使用从服务器接收到的新图像在客户端设置图像的 src 属性?

--WebApi

public HttpResponseMessage Get(int id)
    {
        ElevationResponse elev = ElevationHelper.GetElevation(id);

        Bitmap canvas = ShopDrawing.Elevation.Elevation.GetShopDrawing(elev, true);

        var ms = new MemoryStream();
        canvas.Save(ms, System.Drawing.Imaging.ImageFormat.Png);

        HttpResponseMessage r = Request.CreateResponse();
        r.Content = new StreamContent(ms);
        r.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/png");
        return r;
    }

--客户端

  $.ajax(
         {
             async: true,
             url: '/api/drawings?id=' + this.id,
             type: 'GET',
             contentType: "application/json",
             success: function (d, status) {
                 debugger

             }
         });

最佳答案

只需将 '/api/drawings?id=' + this.id 指定为图像 src 属性。

在服务器端,您应该在canvas.Save() 之后重置内存流,以便从头开始发送。此外,指定 http Content-Length header ,以便浏览器在下载时知道总大小:

ms.Position = 0;
r.Content.Headers.ContentLength = ms.Length;

如果不行,直接在浏览器输入url,打开开发者工具查看网络流量。

关于c# - 如何将位图返回给浏览器 WebApi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14762845/

相关文章:

python - 使用 Scipy imsave 将 Numpy 数组保存到图像时保留未更改的数据

c# - 加载 JPEG : "A generic error occurred in GDI+." 时出错

c# - 使用 ScrollViewer 捏缩放

c# - MVVM – 模型的正确实现

c# - 如何强制正则表达式的部分匹配?

javascript - 获取td文本jquery过滤后tr的索引

javascript - 如何使用 mongoose 对深层嵌套数组进行 $slice

html - 在以下出现相同工具提示图像的情况下,如何在悬停时显示不同的工具提示图像?

c# - 如何组合列表的元素

javascript - struts2+spring3 : passing a variable from action to jsp (javascript code)