我正在寻找一种简单方法来设置Http响应中动态创建图像的内容长度。在ASP.NET中设置动态创建图像的内容长度
Response.ContentType = "image/jpeg";
Response.Clear();
Response.BufferOutput = true;
...
Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb);
...
bmp.Save(Response.OutputStream, ImageFormat.Jpeg);
Response.Flush();
试图做的设置内容长度
Response.AddHeader("Content-Length", Response.OutputStream.Length())
给人意想不到的效果。
另外我不希望将文件复制到另一个流(比如MemoryStream)并将其复制到输出流。
任何想法?
谢谢。
您的HTTP服务器类是否支持分块编码?如果是这样,那就使用它,你不需要设置大小,你仍然允许连接保持活着。 – 2012-03-07 08:43:52
@Eden,您必须将图像存储到mem流中并测量内容长度。 OTOH,为什么不把图像推到磁盘上,然后使用Reponse.WriteFile(或TransmitFile)从那里提供图像。这种方式只有在你必须多次服务于同一个映像时才有意义(基本上你正在将它缓存到磁盘上)到(可能)多个用户。 – VinayC 2012-03-07 09:29:33
@DavidSchwartz - 从文档看来,IIS 7.5支持分块编码,尽管我在响应头文件中没有看到它。我将不得不调查这个问题。谢谢! – Eden 2012-03-11 06:33:23