如果要将其存储在数据库中,则应使用varbinary
. 它在功能上等同于image
列类型,但image
已弃用,取而代之的是varbinary(MAX)
. 通常,要使用数据库中的图像,您需要创建一个 HttpHandler(如果使用 ASP.NET MVC,则创建一个控制器/动作)来处理对与图像关联的标识符进行编码的 url,例如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; }
}
}