ダイナミックに作成された画像のコンテンツ長をHTTPレスポンスに簡単に設定する方法を探しています。ASP.NETでダイナミックに作成された画像のコンテンツ長を設定する
Response.AddHeader("Content-Length", Response.OutputStream.Length())
とコンテンツの長さが予期しない結果をもたらす設定やろうとし
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();
。
また、ファイルを別のストリーム(MemoryStreamなど)にコピーして、出力ストリームに再度コピーすることは望ましくありません。
アイデア?
ありがとうございました。
HTTPサーバークラスはチャンクエンコードをサポートしていますか?もしそうなら、ちょうどそれを使用し、あなたはサイズを設定する必要はなく、あなたはまだ接続を生かしておくことができます。 –
@ Edenの場合、画像をmem-streamに保存してコンテンツの長さを測定する必要があります。 OTOH、Reponse.WriteFile(またはTransmitFile)を使ってディスク上のイメージをプッシュし、そこから配信するのはなぜですか?この方法は、同じイメージを複数回(おそらくあなたがディスクにキャッシュしている)、複数のユーザーに(おそらく)提供しなければならない場合にのみ意味をなさないでしょう。 – VinayC
@DavidSchwartz - ドキュメンテーションから、IIS 7.5ではチャンクエンコーディングがサポートされているようですが、レスポンスヘッダーには表示されません。この問題を調査する必要があります。ありがとう! – Eden