65.9K
CodeProject 正在变化。 阅读更多。
Home

在 ASP 中从数据库显示图片

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.44/5 (40投票s)

2004 年 5 月 31 日

1分钟阅读

viewsIcon

449587

downloadIcon

6390

本文档描述了如何在 SQL Server 或 MS Access 中显示存储在数据库中的图像。

引言

本文档描述了如何显示存储在数据库中的图像。您可以使用 <IMG> 标签通过在 <IMG> 标签的 SRC 属性中调用另一个 ASP 页面来显示数据库中存储的图像。

例如

<IMG SRC="ShowPicture.asp?PhotoId=1">

其中 PhotoId 是数据库中存储的 ID。

使用代码

以下是需要执行的步骤

  1. 在 MS-Access 或 SQL Server 中创建 Users 表。
  2. 创建 ShowPicture.asp 页面。
  3. 在需要的地方使用 <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...

注释

始终最好将图像存储在文件系统中,而不是存储在数据库中。只能将图像路径存储在数据库中。但是,将图像存储在数据库中取决于需求。

© . All rights reserved.