小编raj*_*raj的帖子

使用ASP.Net Webapi流式传输大图像

我们正在尝试使用ASP.Net WebApi返回大型图像文件,并使用以下代码将字节流式传输到客户端.

public class RetrieveAssetController : ApiController
{
    // GET api/retrieveasset/5
    public HttpResponseMessage GetAsset(int id)
    {
        HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
        string filePath = "SomeImageFile.jpg";

        MemoryStream memoryStream = new MemoryStream();

        FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read);

        byte[] bytes = new byte[file.Length];
        file.Read(bytes, 0, (int)file.Length);

        memoryStream.Write(bytes, 0, (int)file.Length);

        file.Close();

        httpResponseMessage.Content =  new ByteArrayContent(memoryStream.ToArray());
        httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        httpResponseMessage.StatusCode = HttpStatusCode.OK;

        return httpResponseMessage;
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常但我们处理的一些文件可能是2 GB及以上的大小导致连接超时.我们过去使用类似于下面的代码(使用HttpHandlers)来对响应流进行响应,以保持连接成功.

byte[] b = new byte[this.BufferChunkSize];
int byteCountRead = 0;

while ((byteCountRead = stream.Read(b, 0, …
Run Code Online (Sandbox Code Playgroud)

c# streaming download large-files asp.net-web-api

16
推荐指数
1
解决办法
2万
查看次数

标签 统计

asp.net-web-api ×1

c# ×1

download ×1

large-files ×1

streaming ×1