ジェネリックハンドラー(CGI・プログラム)が返した画像を保存する際にデフォルトの名前を設定したい - ASP.NET

ジェネリックハンドラーやCGIなどのプログラムが画像を返した場合、その画像を保存する際に開くダイアログでデフォルトのファイル名を設定する場合についての説明です。Webサイトの画像ファイルを表示させて保存する場合は、画像ファイル名が保存の際のデフォルトの名前になりますが、プログラムが返した画像の場合は別途設定する必要があります。

レスポンスヘッダにContent-Dispositionを付与する方法で対応できます。
例1
Content-Disposition:inline; filename=picture01.jpg
例2
Content-Disposition:attachment; filename=picture01.jpg
例1、例2どちらのヘッダでも保存の際のデフォルト名は設定できます。例1の場合は画像を返すCGIのURLを直接開いた際にブラウザに画像が表示されます。例2の場合ではURLを直接開くとダウンロードのダイアログボックスが表示されます。

C#での実装例
SqlCommand com = new SqlCommane("select pic from image where id=12", sqlConnnection); 
byte[] imgBytes = (byte[])com.ExecuteScalar();

//中略//

Response.ContentType = "image/jpeg";
Response.AppendHeader("Content-Disposition", string.Format("inline; filename={0:s}.jpg", figID));
Response.OutputStream.Write(imageBytes, 0, imageBytes.Length);
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-06
作成日: 2009-11-16
iPentec all rights reserverd.