データベースに保存する場合は、 を使用する必要がありますvarbinary
。機能的にはimage
列タイプと同等image
ですが、推奨されなくなりましたvarbinary(MAX)
。通常、データベースから画像を使用するには、画像に関連付けられた識別子 ( http://www.example.com/imagehandler.ashx?id=42
. この場合、ハンドラーは42
、データベース内の id を持つイメージを見つけ、正しい MIME タイプを持つ列の内容に対応するバイト配列から応答を構築することを認識します。
サンプル コード:完全にテストされていません
public class ImageHandler: IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
int imageID = -1;
if (context.Request.QueryString["id"] == null || !int.TryParse( context.Request.QueryString["id"], out imageID) )
{
throw new ArgumentException("Invalid or missing image id.");
}
using (var context = new ImagesDataContext())
{
var image = context.Images.SingleOrDefault( i => i.ID == imageID );
if (image != null)
{
context.Response.ContentType = image.MimeType;
context.Response.BinaryWrite( image.Content );
}
else
{
// decide how you want to handle an image that isn't found
}
}
}
public bool IsReusable
{
get { return false; }
}
}