在 ASP 中从数据库显示图片






4.44/5 (40投票s)
2004 年 5 月 31 日
1分钟阅读

449587

6390
本文档描述了如何在 SQL Server 或 MS Access 中显示存储在数据库中的图像。
引言
本文档描述了如何显示存储在数据库中的图像。您可以使用 <IMG>
标签通过在 <IMG>
标签的 SRC
属性中调用另一个 ASP 页面来显示数据库中存储的图像。
例如
<IMG SRC="ShowPicture.asp?PhotoId=1">
其中 PhotoId
是数据库中存储的 ID。
使用代码
以下是需要执行的步骤
- 在 MS-Access 或 SQL Server 中创建 Users 表。
- 创建 ShowPicture.asp 页面。
- 在需要的地方使用
<IMG>
标签调用此页面。
创建具有以下结构的表
表名:Users
user_id
(自动编号)user_name
(文本)user_photo
(OLE 对象 - 对于 MS-Access,以及 SQL Server 的 Image 数据类型)。
代码
ShowPicture.asp 用于显示图像。您需要在查询字符串中传递用户 ID,并为该用户 ID 显示图像。以下是代码
'Declare Variables..
Dim sql
Dim rs
Dim conn
Dim userID,str
userID = Request("PhotoId")
If userID = "" Then userID = 0
'Instantiate Objects
Set conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
'Open connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("data.mdb")
'Get the specific image based on the ID passed in a querystring
str = "SELECT user_photo FROM users where user_id =" & userID
rs.Open str, conn,3,3
if rs.eof then 'No records found
Response.End
else 'Display the contents
Response.ContentType = "image/gif"
Response.BinaryWrite(rs("user_photo"))
end if
'destroy the variables.
rs.Close
conn.Close
set rs = Nothing
set conn = Nothing
请注意,“Response.contentType
” 将取决于您想要显示的内容的类型。例如,要显示 jpg 图像,代码将如下所示
Response.ContentType = "image/jpg"
要使用上述页面显示图像,以下是一个示例
<IMG SRC="ShowPicture.asp?PhotoId=1">
<IMG SRC="ShowPicture.asp?PhotoId=2">
上传图像
以下示例显示了如何使用 ASPSmartUpload
组件将图像上传到数据库。有关此组件的更多信息,请在此处查找 此处。
以下是将图像保存到数据库的代码
<FORM METHOD="POST" ACTION="saveFile.asp"
ENCTYPE="multipart/form-data" NAME="UploadForm">
<center>
Employee Name : <INPUT TYPE="TEXT" NAME="USERNAME" SIZE="30"><br>
<INPUT TYPE="FILE" NAME="UPLOADFILE1" SIZE="50">
</center>
<BR>
<center><INPUT TYPE="SUBMIT" VALUE="Upload"
id=SUBMIT1 name=SUBMIT1></center>
</FORM>
将图像保存到数据库的代码
Dim myupload
'declare variables..
intCount=0
' Create Upload Component
Set myupload = Server.CreateObject("aspSmartUpload.SmartUpload")
myupload.Upload
'Create Connection
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("data.mdb")
Set Rs = Server.CreateObject("ADODB.recordset")
Rs.Open "SELECT user_id,user_name,user_photo FROM users", Conn,3,3
'Select each file
For each file In myupload.Files
If not file.IsMissing Then 'Check for missing file
'Add the current file in database
Rs.AddNew
file.FileToField Rs.Fields("user_photo")
Rs("user_name") = myupload.Form("USERNAME")
Rs.Update
intCount = intCount + 1
End If
Next
Response.Write(intCount & " file(s) uploaded.")
'Destroy the objects...
注释
始终最好将图像存储在文件系统中,而不是存储在数据库中。只能将图像路径存储在数据库中。但是,将图像存储在数据库中取决于需求。