我正在尋找一種簡單方法來設置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