當前位置:首頁 » 操作系統 » aspnet讀取資料庫圖片

aspnet讀取資料庫圖片

發布時間: 2022-10-15 06:53:31

1. 在ASP.NET中如何上傳圖片到資料庫中,然後從資料庫中將圖片調出

用上傳控制項.上傳到指定的目錄.存文件名到資料庫中.讀取的時候前面加指定的目錄.再加上文件名.就能顯示出來了.當然,也可以用二進制的存儲.但是比較復雜了.

2. asp中如何調用資料庫圖片,麻煩仔細點,謝謝!

你沒有說清是什麼資料庫,先說說access吧。

如何從ACCESS資料庫中讀取images
1。ACCESS和FoxPro資料庫中的圖形格式
當瀏覽器遇到一個<IMG>標志時,它會根據你設定的src屬性來下載文件。
這可能是一個圖形文件或則是一個ASP頁面。
如果是一個返回gif二進制的ASP頁面
瀏覽器需要知道返回的是什麼格式的圖形文件
因為這個原因,就需要指定content type,為image/gif,image/bmp
image/jpeg或則其他什麼的。
Response.contentType = "image/gif"
但這會導致另外一個問題,那就是我們只能夠顯示gif格式的圖象,
或則說保存在資料庫中的東西只能夠是gif格式的了。
但是一些資料庫是使用gif格式保存的,但是另外一些則是使用
jpeg格式保存的,甚至其他是採用OLE方式來保存圖形的。
所以我們必須根據圖形的格式來設置response的content type.

注意的是你也可以從一個文件中新建一個點陣圖對象,但使用這樣
的方式保存在資料庫中的圖形格式是瀏覽器不能夠識別的。
當你往資料庫中保存圖象時,你應該知道你需要使用什麼格式來保存
你可以把文件中的每一個位元組保存下來,或則通過ACCESS/Foxpro的把圖形保存
為一個OLE格式。
你使用什麼格式保存圖象決定了你在ASP中用什麼格式來讀出圖形來。
具體來說,如果你在ACCESS/FoxPro中將圖形保存為bmp,gif,jpeg(
這個必須要使用到ACCESS/FoxPro的OLE對象,即使用ACCESS的插入對象
對話框來完成),這是當你使用
image/bmp時瀏覽器是不能夠解釋的。

現在假設在資料庫中保存的是你所想要的圖形格式
(GIF, JPEG, BMP, TIFF, 等)現在來看看要怎麼把它們從
資料庫中讀出來。

在ACCESS中使用了兩個關鍵的技術來保存圖形
1。使用了bmp格式
2。78個位元組的文件頭

<%
response.Expires = 0
response.Buffer = True
response.Clear
response.contentType = "image/bmp"
%>
接著你要乾的就是去掉那78個位元組的OLE對象的文件頭。
<%
Const OLEHEADERSIZE = 78
nFieldSize = rs("photo").ActualSize
oleHeader = rs("photo").GetChunk(OLEHEADERSIZE)
imageBytes = rs("photo").GetChunk(nFieldSize - OLEHEADERSIZE)
Response.BinaryWrite imageBytes
%>

現在舉一個例子:
如果你要得到一個職工的信息,這段信息包括一個介紹和他的圖象。
並且要同時顯示文字和圖形。
代碼如下:(其中的theImg是一個代理頁面)
theImg.asp
<%
response.Expires = 0
response.Buffer = True
response.Clear
response.contentType = Session("ImageType")
response.BinaryWrite Session("ImageBytes")
Session("ImageType") = ""
Session("ImageBytes") = ""
response.End
%>

Function SetImageForDisplay(field, contentType)
OLEHEADERSIZE = 78
contentType = LCase(contentType)
select case contentType
case "gif", "jpeg", "bmp"
contentType = "image/" & contentType
bytes = field.value
case "ole"
contentType = "image/bmp"
nFieldSize = field.ActualSize
oleHeader = field.GetChunk(OLEHEADERSIZE)
bytes = field.GetChunk(nFieldSize - OLEHEADERSIZE)
end select
Session("imageBytes") = bytes
Session("imageType") = contentType
End Function
'注意的是,程序中只使用了4中格式:gif, jpeg, bmp , ole .

<%
sql = "select * from Employees"
Set oRS = Server.CreateObject("ADODB.Recordset")
oRS.CursorLocation = 3
oRS.Open sql, "DSN=NW"
SetImageForDisplay oRS("photo"), "ole"
Set oRS.ActiveConnection = Nothing
%>

要顯示圖象的話,只需要在另外一個asp中,假設為getEmpInfo.asp中
<img src="theImg.asp"</img>
但這還有一個問題,因為對每個職工的圖形都使用了同一個"theImg.asp"
文件,應該再小小修改一下:
<img src="theImg.asp?temp=<%= Request.Form("empLastName")%>"</img>

最後再說一點,如何顯示多幅圖象呢?
也就是說如果資料庫中有多個欄位都保存了圖形,怎麼辦?
其實解決辦法很簡單,只要給SetImageForDisplay多加一個參數
就是用來保存圖形的一個session變數。
例如:
SetImageForDisplay oRS1("photo"), "ole", "empPhoto"
SetImageForDisplay oRS2("logo"), "gif", "compLogo"

<img src="theImg2.asp?varName=empPhoto&temp=<%= Request.Form("empLastName")%>">
<img src="theImg2.asp?varName=compLogo&temp=<%= Request.Form("imgCode")%>">

使用這個方法能夠完成下面的功能:
1。能夠從資料庫中取出圖形欄位。(你唯一需要知道的是資料庫中的圖形是什麼格式
bmp?gif?jpeg?ole?)
2.採用session變數 來保存圖形的位元組數和content type
asp需要這些信息來聯結到<IMG>中的屬性
3。只要把theImg放到你想顯示圖形的地方,就能夠顯示圖象了

3. 用asp.net做了一個網頁,用後台控制項讀取了一個資料庫中圖片的信息,怎麼將其顯示在制定的img中

我來回答你吧!我這些天碰到了和你一樣的問題,後來我解決了,我給你兩種方法。
方法一:圖片是直接存在SQL Server中的Image類型中的,你首先新建一個空白的aspx網頁,在這個新建的網頁的Page_Load()中讀出Image,然後用Response.BinaryWrite()函數顯示出來,然後在你原來的那個網頁中的Image控制項的ImageURL屬性填那個新建的aspx網頁,就是
image1.ImageUrl = "temp.aspx";這樣就好了
方法二:資料庫存的不是Image欄位,而是圖片的的地址,然後再Image的ImageURL中填這個地址就行了,直接能顯示出來。
我用的第二種方法,在我前幾天就這問題感到很迷茫的時候搜了很多資料,假如你還是不清楚就可以跟我說,我這段時間都在線!祝你好運!

4. 如何才能往資料庫里讀取圖片數據或者從資料庫里讀圖片

王大偉,這題我不要了,你隨意認證,任意拒絕,我已舉報。

5. asp.net將資料庫里的圖片路徑讀取並顯示圖片

什麼意思,顯示的圖片的代碼當然要放到aspx頁面中,這里要看你要用的數據控制項是什麼了,比如如果是repeater,就要把路徑放到item裡面,例如: <ul> <asp:Repeater ID="Repeater2" runat="server" DataSourceID="ObjectDataSource1"> <ItemTemplate><li><a href = '<%#Eval("NaviUrl") %>' target="_blank"><img src='<%#Eval("PicUrl") %>' /></a></li></ItemTemplate> </asp:Repeater> </ul> 其中NaviUrl是資料庫中圖片超鏈接地址的欄位,PicUrl就是圖片在資料庫中的欄位 不懂在追問。

6. 怎樣用asp顯示資料庫里的圖片

你沒有說清是什麼資料庫,先說說access吧。

如何從ACCESS資料庫中讀取images
1。ACCESS和FoxPro資料庫中的圖形格式
當瀏覽器遇到一個<IMG>標志時,它會根據你設定的src屬性來下載文件。
這可能是一個圖形文件或則是一個ASP頁面。
如果是一個返回gif二進制的ASP頁面
瀏覽器需要知道返回的是什麼格式的圖形文件
因為這個原因,就需要指定content type,為image/gif,image/bmp
image/jpeg或則其他什麼的。
Response.contentType = "image/gif"
但這會導致另外一個問題,那就是我們只能夠顯示gif格式的圖象,
或則說保存在資料庫中的東西只能夠是gif格式的了。
但是一些資料庫是使用gif格式保存的,但是另外一些則是使用
jpeg格式保存的,甚至其他是採用OLE方式來保存圖形的。
所以我們必須根據圖形的格式來設置response的content type.

注意的是你也可以從一個文件中新建一個點陣圖對象,但使用這樣
的方式保存在資料庫中的圖形格式是瀏覽器不能夠識別的。
當你往資料庫中保存圖象時,你應該知道你需要使用什麼格式來保存
你可以把文件中的每一個位元組保存下來,或則通過ACCESS/Foxpro的把圖形保存
為一個OLE格式。
你使用什麼格式保存圖象決定了你在ASP中用什麼格式來讀出圖形來。
具體來說,如果你在ACCESS/FoxPro中將圖形保存為bmp,gif,jpeg(
這個必須要使用到ACCESS/FoxPro的OLE對象,即使用ACCESS的插入對象
對話框來完成),這是當你使用
image/bmp時瀏覽器是不能夠解釋的。

現在假設在資料庫中保存的是你所想要的圖形格式
(GIF, JPEG, BMP, TIFF, 等)現在來看看要怎麼把它們從
資料庫中讀出來。

在ACCESS中使用了兩個關鍵的技術來保存圖形
1。使用了bmp格式
2。78個位元組的文件頭

<%
response.Expires = 0
response.Buffer = True
response.Clear
response.contentType = "image/bmp"
%>
接著你要乾的就是去掉那78個位元組的OLE對象的文件頭。
<%
Const OLEHEADERSIZE = 78
nFieldSize = rs("photo").ActualSize
oleHeader = rs("photo").GetChunk(OLEHEADERSIZE)
imageBytes = rs("photo").GetChunk(nFieldSize - OLEHEADERSIZE)
Response.BinaryWrite imageBytes
%>

現在舉一個例子:
如果你要得到一個職工的信息,這段信息包括一個介紹和他的圖象。
並且要同時顯示文字和圖形。
代碼如下:(其中的theImg是一個代理頁面)
theImg.asp
<%
response.Expires = 0
response.Buffer = True
response.Clear
response.contentType = Session("ImageType")
response.BinaryWrite Session("ImageBytes")
Session("ImageType") = ""
Session("ImageBytes") = ""
response.End
%>

Function SetImageForDisplay(field, contentType)
OLEHEADERSIZE = 78
contentType = LCase(contentType)
select case contentType
case "gif", "jpeg", "bmp"
contentType = "image/" & contentType
bytes = field.value
case "ole"
contentType = "image/bmp"
nFieldSize = field.ActualSize
oleHeader = field.GetChunk(OLEHEADERSIZE)
bytes = field.GetChunk(nFieldSize - OLEHEADERSIZE)
end select
Session("imageBytes") = bytes
Session("imageType") = contentType
End Function
'注意的是,程序中只使用了4中格式:gif, jpeg, bmp , ole .

<%
sql = "select * from Employees"
Set oRS = Server.CreateObject("ADODB.Recordset")
oRS.CursorLocation = 3
oRS.Open sql, "DSN=NW"
SetImageForDisplay oRS("photo"), "ole"
Set oRS.ActiveConnection = Nothing
%>

要顯示圖象的話,只需要在另外一個asp中,假設為getEmpInfo.asp中
<img src="theImg.asp"</img>
但這還有一個問題,因為對每個職工的圖形都使用了同一個"theImg.asp"
文件,應該再小小修改一下:
<img src="theImg.asp?temp=<%= Request.Form("empLastName")%>"</img>

最後再說一點,如何顯示多幅圖象呢?
也就是說如果資料庫中有多個欄位都保存了圖形,怎麼辦?
其實解決辦法很簡單,只要給SetImageForDisplay多加一個參數
就是用來保存圖形的一個session變數。
例如:
SetImageForDisplay oRS1("photo"), "ole", "empPhoto"
SetImageForDisplay oRS2("logo"), "gif", "compLogo"

<img src="theImg2.asp?varName=empPhoto&temp=<%= Request.Form("empLastName")%>">
<img src="theImg2.asp?varName=compLogo&temp=<%= Request.Form("imgCode")%>">

使用這個方法能夠完成下面的功能:
1。能夠從資料庫中取出圖形欄位。(你唯一需要知道的是資料庫中的圖形是什麼格式
bmp?gif?jpeg?ole?)
2.採用session變數 來保存圖形的位元組數和content type
asp需要這些信息來聯結到<IMG>中的屬性
3。只要把theImg放到你想顯示圖形的地方,就能夠顯示圖象了

7. 如何用ASP.NET想資料庫中存取圖片

鑒於很多同學咨詢,如何向資料庫中存儲並讀取圖片的方法.在此給出代碼,供大家參考.但個人建議,盡量少向資料庫中存儲如此大二進制數據,會造成資料庫過於膨脹,如果採用DataSet讀取數據時,當數據量過大還會造成內存嚴重佔用,尤其是在B/S程序設計中,後果會更明顯,除非用戶強烈要求.一般存儲圖片時,如無特殊要求,只需要在資料庫中存儲圖片的相對路徑即可,將真正的圖片存儲在指定的文件夾就OK了.當然,兩種方式在不同的適用面都有自己的優缺點,下面幾篇文章大家可以看看:
http://..com/question/19710373.html
http://www.programfan.com/club/showpost.asp?id=29186
以下是存儲並顯示圖片的代碼
private void button1_Click(object sender, EventArgs e) //button1的Click事件
//存儲圖片的代碼,需在界面添加按鈕Button1,打開文件對話框openFileDialog1,列表框listBox1和圖片控制項pictureBox1,代碼注釋部分為SqlServer實現,非注釋部分為Access實現,在Access中,資料庫名為mydb.mdb,表名為photos,欄位為photoid(文本類型,主鍵),photoimg(OLE對象類型,用於存圖片)
{
openFileDialog1.Filter = "*jpg|*.jpg|*bmp|*.bmp|*gif|*.gif";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string fullpath = openFileDialog1.FileName
FileStream fs = new FileStream(fullpath, FileMode.Open, FileAccess.Read);
byte[] imagebytes = new byte[fs.Length];
BinaryReader br = new BinaryReader(fs);
imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));//把所選圖片文件的流中的數據讀入位元組數組
OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Application.StartupPath + "[url=file://\\mydb.mdb]\\mydb.mdb[/url]");
conn.Open();
OleDbCommand cmd = new OleDbCommand("insert into photos values(@id,@Image)", conn);
cmd.Parameters.Add("@id", OleDbType.VarChar, 50);
cmd.Parameters.Add("@Image", OleDbType.Binary);//圖片數據
cmd.Parameters["@id"].Value = DateTime.Now.Year.ToString() + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + DateTime.Now.Millisecond;
cmd.Parameters["@Image"].Value = imagebytes;//為圖片數據的SQL參數賦值
cmd.ExecuteNonQuery();
conn.Close();
//SqlConnection conn = new SqlConnection("server=LENOVO-B2A10C83;database=mydb;uid=sa;pwd=128126");
//conn.Open();
//SqlCommand cmd = new SqlCommand("insert into photos values(@id,@Image)", conn);
//cmd.Parameters.Add("@id", SqlDbType.VarChar, 50);
//cmd.Parameters.Add("@Image", SqlDbType.Image );//與ACCESS資料庫唯一不同點
//cmd.Parameters["@id"].Value = DateTime.Now.Year.ToString() + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + DateTime.Now.Millisecond;
//cmd.Parameters["@Image"].Value = imagebytes;
//cmd.ExecuteNonQuery();
//conn.Close();
MessageBox.Show("圖片上傳成功");
bindListBox();
}
}
private void bindListBox()//將photoId欄位的數據顯示在listBox1中,以便查看存入庫中的每一個圖片
{
OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Application.StartupPath + "[url=file://\\mydb.mdb]\\mydb.mdb[/url]");
OleDbCommand cmd = new OleDbCommand("select photoid from photos");
cmd.Connection = conn;
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
listBox1.DataSource = ds.Tables[0].DefaultView;//設置listBox1的數據源
listBox1.DisplayMember = "photoid";//設置listBox1即將顯示數據源中的哪個欄位的數據
//SqlConnection conn = new SqlConnection("server=LENOVO-B2A10C83;database=mydb;uid=sa;pwd=128126");
//SqlCommand cmd = new SqlCommand("select photoid from photos");
//cmd.Connection = conn;
//SqlDataAdapter da = new SqlDataAdapter();
//da.SelectCommand = cmd;
//DataSet ds = new DataSet();
//da.Fill(ds);
//listBox1.DataSource = ds.Tables[0].DefaultView;
//listBox1.DisplayMember = "photoid";
}
private void Form1_Load(object sender, EventArgs e) //Form1的Load事件
{
bindListBox();//程序載入時,先將資料庫中現有的數據顯示在listBox1中
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)//listBox1的SelectedIndexChanged事件,當在listBox1中選擇不同的photoId時,pictureBox1中顯示該photoId對應的圖片
{
OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Application.StartupPath + "[url=file://\\mydb.mdb]\\mydb.mdb[/url]");
OleDbCommand cmd = new OleDbCommand("select photoimg from photos where photoid='" + ((DataRowView)(listBox1.SelectedValue))[0] + "'");//將listBox1中選中的photoId所對應的圖片數據從資料庫中取出來
cmd.Connection = conn;
conn.Open();
OleDbDataReader dr = cmd.ExecuteReader();
dr.Read();
byte[] b = (byte[])dr[0];//將圖片數據轉換成位元組數組
MemoryStream stmBLOBData = new MemoryStream(b);//將該位元組數組轉換成內存流
pictureBox1.Image = Image.FromStream(stmBLOBData);//將該內存流轉換成Image對象,並顯示在pictureBox1中
//SqlConnection conn = new SqlConnection("server=LENOVO-B2A10C83;database=mydb;uid=sa;pwd=128126");
//SqlCommand cmd = new SqlCommand("select photoimg from photos where photoid='" + ((DataRowView)(listBox1.SelectedValue))[0] + "'");
//cmd.Connection = conn;
//conn.Open();
//SqlDataReader dr = cmd.ExecuteReader();
//dr.Read();
//byte[] b = (byte[])dr[0];
//MemoryStream stmBLOBData = new MemoryStream(b);
//pictureBox1.Image = Image.FromStream(stmBLOBData);
}

8. 在asp.net中怎麼出資料庫中讀圖片地址,並在image中顯示出來

資料庫為SQL:
先引入:
using System.Data.SqlClient;

SqlConnection con=SqlConnection("server=(local);database=dz;uid=sa;pwd=123");

con.open(); //打開資料庫
SqlCommand cmd=new SqlCommand("select*from img where id=1",con);
SqlDataReader dr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
if(dr.Read())
{
Image1.src=Server.MapPath(dr["imgurl"].ToString());

}

con.close();

前台<img id="Image1" runat="server" />

9. 如何從資料庫中讀取多張圖片並在asp.net(c#)頁面中顯示出來

你先從資料庫中取出你想要取出的圖片,然後把它嵌入到前台的HTML語言中,再把該HTML放到<div>html及圖片地址的組合內容</div>標簽中放到後台用字元串連接起來,再把它和前台綁定即可。

熱點內容
迭代法編程c 發布:2025-05-15 04:58:01 瀏覽:814
用什麼dns伺服器地址快 發布:2025-05-15 04:52:59 瀏覽:26
手機端so反編譯 發布:2025-05-15 04:50:55 瀏覽:610
linuxlamp安裝 發布:2025-05-15 04:50:45 瀏覽:578
sqlplus緩存區怎麼設置 發布:2025-05-15 04:50:44 瀏覽:858
shell腳本環境變數 發布:2025-05-15 04:45:18 瀏覽:693
安卓nba2k18什麼時候出 發布:2025-05-15 04:38:42 瀏覽:393
王者安卓轉蘋果為什麼顯示失敗 發布:2025-05-15 04:35:49 瀏覽:18
手機優酷緩存視頻格式 發布:2025-05-15 04:13:45 瀏覽:210
公益電影分鏡頭腳本插畫 發布:2025-05-15 04:08:37 瀏覽:961