我有一個SQL Server 2008數據庫,其圖像字段包含圖片。如何顯示使用ASP.NET存儲在SQL Server數據庫中的圖片?
我在ASP.NET Web程序一個gridview,我需要顯示在圖片:
我的GridView
我的圖像控制,我在形式
我可以得到任何示例代碼嗎?
在此先感謝。
我有一個SQL Server 2008數據庫,其圖像字段包含圖片。如何顯示使用ASP.NET存儲在SQL Server數據庫中的圖片?
我在ASP.NET Web程序一個gridview,我需要顯示在圖片:
我的GridView
我的圖像控制,我在形式
我可以得到任何示例代碼嗎?
在此先感謝。
我相信圖像會以二進制形式出現。您需要將二進制文件轉換爲圖像。
這些引用會幫助你轉換
Silverlight 4.0: How to convert byte[] to image?
http://www.eggheadcafe.com/community/aspnet/2/10038022/convert-binary-data-to-an-image.aspx
我張貼一些代碼,在一個類似的問題在這裏:
您可以使用數據uri方案與base64(假設它存儲在base64中)字符串ie
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">
看到這麼例如http://en.wikipedia.org/wiki/Data_URI_scheme
如果你使用,你會即對於中繼器數據綁定控件做到這一點:
<ItemTemplate>
<img src='data:image/<%# Eval("FileType") %>;base64,<%# Eval("ImageData") %> width='<%# Eval("ImgWidth")%>' height='<%# Eval("ImgHeight")%>' />
</ItemTemplate>
使用通用處理程序從數據庫中獲取圖像,並顯示出使用ifram將是更好的選擇在網上顯示文件。
iframeFile.Attributes.Add("src", "/ShowImage.ashx?id=" + id);
這是一個通用的處理程序代碼來顯示圖像文件和PDF文件。如果你只是想顯示圖像文件只是刪除其他條件,並使用圖像/ JPEG擴展名。
public class ShowImage : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Int32 imgID;
if (context.Request.QueryString["id"] != null)
imgID = Convert.ToInt32(context.Request.QueryString["id"]);
else
throw new ArgumentException("No parameter specified");
byte[] buffer = ShowEmpImage(imgID);
bool temp = false;
string extension = "";
var enc = new ASCIIEncoding();
var header = enc.GetString(buffer);
dbClass db = new dbClass();
extension = db.GetID("select fileExtension from tableName WHERE LOGuid=" + imgID, "fileExtension");
if (extension == null || extension == "")
{
if (buffer[0] == 0x25 && buffer[1] == 0x50
&& buffer[2] == 0x44 && buffer[3] == 0x46)
{
temp = header.StartsWith("%PDF-");
extension = "application/pdf";
}
else if (buffer[0] == 0xFF && buffer[1] == 0xD8
&& buffer[2] == 0xFF && buffer[3] == 0xE0)
{
temp = header.StartsWith("%JPG-");
extension = "image/jpeg";
extension = "image/jpg";
}
else if (buffer[0] == 0x89 && buffer[1] == 0x50
&& buffer[2] == 0x4E && buffer[3] == 0x47)
{
temp = header.StartsWith("%PNG-");
extension = "image/jpeg";
extension = "image/png";
}
else if (buffer[0] == 0x49 && buffer[1] == 0x49
&& buffer[2] == 0x2A && buffer[3] == 0x00)
{
temp = header.StartsWith("%TIF-");
extension = "image/jpeg";
extension = "image/tiff";
extension = "image/tif";
}
else if (buffer[0] == 0x47 && buffer[1] == 0x49
&& buffer[2] == 0x46 && buffer[3] == 0x38)
{
temp = header.StartsWith("%GIF-");
extension = "image/jpeg";
extension = "image/gif";
}
else if (buffer[0] == 0x42 && buffer[1] == 0x4D
&& buffer[2] == 0x46 && buffer[3] == 0x38)
{
temp = header.StartsWith("%BMP-");
extension = "image/jpeg";
extension = "image/bmp";
}
else if (buffer[0] == 0x00 && buffer[1] == 0x00
&& buffer[2] == 0x01 && buffer[3] == 0x00)
{
temp = header.StartsWith("%ICO-");
extension = "image/jpeg";
extension = "image/ico";
}
else
extension = "image/jpeg";
//else
//extension = "application/pdf";
}
context.Response.ContentType = extension;
context.Response.AddHeader("content-length", buffer.Length.ToString());
context.Response.BinaryWrite(buffer);
}
public byte[] ShowEmpImage(int imgID)
{
dbClass db = new dbClass();
string sql = "SELECT LOGpdf FROM tableName WHERE LOGuid = @ID";
SqlCommand cmd = new SqlCommand(sql, db.con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@ID", imgID);
object img = null;
try
{
db.Connect();
img = cmd.ExecuteScalar();
}
catch
{
return null;
}
finally
{
db.Disconnect();
}
return (byte[])img;
}
public bool IsReusable
{
get
{
return false;
}
}
}
的可能重複的[在SQL ASP.NET存儲圖像和檢索的Asp:圖像](http://stackoverflow.com/questions/698912/asp-net-store-image-in-sql-and -retrieve-for-aspimage) – 2010-12-03 21:23:27
是存儲在FileStream中的圖像,還是存在於varbinary列中? – 2010-12-03 22:08:45