5

我正在使用 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

             }
         });
4

1 回答 1

8

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

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

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

如果这不起作用,请直接在浏览器中输入 url 并启用开发人员工具以查看网络流量。

于 2013-02-08T11:38:48.143 回答