【问题标题】:displaying images from sql database with classic asp用经典的asp显示来自sql数据库的图像
【发布时间】:2012-04-14 03:14:50
【问题描述】:

我正在创建一个主页并有一个新闻部分。当前,新闻部分显示存储它们的数据库中的前 3 个新闻标题/标题。所有者现在想要的方式是在与该新闻文章相关的新闻标题旁边显示图像。所以我设置了一个功能,他们通过他们将图像上传到新闻数据库中,与他们刚刚创建/上传到数据库中的文章进行对比,现在我要做的就是显示保存在数据库中的这张图像。有没有办法做到这一点?

我使用的是经典的 asp 和 html/javascript。

到目前为止我的代码是:

<img id="news_image2" alt="<%=rsNews("Image_Name")%>" border="0" height="70" name="Image" src="<%=rsNews("news_Image")%>" title="Echo_Images" width="80" align="middle" /> </a>   

非常感谢

编辑。这是homepage.asp上的rsnews

    <%@  language="VBSCRIPT" codepage="1252" %>
    <!-- #include file="Connections/echo.asp" -->
<%
Dim rsNews
Dim rsNews_numRows

Set rsNews = Server.CreateObject("ADODB.Recordset")
rsNews.ActiveConnection = MM_echo_STRING
rsNews.Source = "SELECT top 3 News_Article_ID,News_Article_Create_Date,News_Txt_Date,News_Title,News_Publish_Date,News_Expiry_Date,News_Title_Header,News_Active,Admin_ID,News_Ticker,display,Image_Name,displayCode,news_Image FROM tblNews WHERE News_Active = 1 AND News_Expiry_Date >= getDate() AND (display = 'ext' OR display = 'both'OR displayCode=1 OR displayCode=4 OR displayCode=5 OR displayCode=7) ORDER BY News_TXT_Date DESC"
rsNews.CursorType = 0
rsNews.CursorLocation = 2
rsNews.LockType = 1
 rsNews.Open()

rsNews_numRows = 0
%>
<div id="news-home-container">

                         <!--news item 1-->
                        <div>
                           <div class="news-home-image">
                                    <a href="about/echo_news.aspx?id=0">
                                        <img id="news_image2" alt="LatestNews" border="0" height="70" name="logo_link0" src="image_display.asp?PhotoID=627" title="Echo_Images" width="80" align="middle" /></a> </div>

                            <div class="newsDiv">
                          <a href="about/echo_news.aspx?id=0" ><b style="line-height:1.3em"><%=rsNews("News_Title")%></b>
                  <p><%=rsNews("News_Title_Header")%></p></a>                                                                        
                     </div>
                            </div>
                         <!--End of news item 1--> 

现在我需要显示保存在数据库中前 3 篇文章中的图像。

这是image_display.asp中的代码

    <!-- #include file="Connections/echo.asp" -->

<%
    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

' rsNews.ActiveConnection = MM_echo_STRING 'conn = 取消注释此行并在此处插入您的连接字符串 '根据查询字符串中传递的ID获取特定图像 str = "从 tblNews 中选择 news_Image WHERE news_article_id =" & userID rs.Open str, conn,3,3 if rs.eof then '没有找到记录 响应结束 else '显示内容 Response.ContentType = "图片/gif" Response.BinaryWrite(rs("news_Image")) 结束如果

   'destroy the variables.
   rs.Close
    conn.Close
   set rs = Nothing
   set conn = Nothing
 %>

【问题讨论】:

  • MS SQL、MySQL、Oracle?您是否在数据库中存储图像的路径?还是图像本身的二进制(blob)?
  • HeavenCore 是 MS SQL,它被存储为二进制
  • 您是将其存储在 varbinary 还是 image 类型列中?

标签: asp-classic


【解决方案1】:

我想通了。问题是图像未正确加载到数据库中,因此我重新创建了加载图像的页面,然后使用上面的 Jatins 代码,仅将“ID”更改为“News_Article_ID”。完成后,我将以下代码输入到 img 源中

img src="Image_Display.asp?news_Article_iD=<%=rsnews("News_article_id")%>"

感谢大家的帮助

【讨论】:

    【解决方案2】:

    heavencore的回答是对的 您只需要检查您是否正在二进制编写正确的东西 因此,请检查您是否将正确的 id 传递到页面上,然后在其中显示 response.binarywrite rs("ImageBlob") - imageblob 是将图像保存为二进制数据的字段

    看到你的评论后编辑:

    我刚刚查看了您的源代码 -

    你这行代码在哪里

    <img id="news_image2" alt="LatestNews" border="0" height="70" name="logo_link0"      src="images/News_images/default image.jpg" title="Echo_Images" width="80" align="middle" />
    

    你需要用 - 替换它

    <img id="news_image2" alt="LatestNews" border="0" height="70" name="logo_link0" src="somefile.asp?ID=2" title="Echo_Images" width="80" align="middle" />
    

    所以你只需将 src="" 更改为 src="somefile.asp?id=2"

    然后在 somefile.asp 你把这段代码 -

    Dim ImageID
    ImageID = request.querystring("ID")
    Set rs = db.Execute("SELECT ImageBlob FROM table WHERE ID = " & ImageID)
    
    Response.Expires = 0 
    Response.Buffer = TRUE 
    Response.Clear 
    Response.ContentType = "image/jpeg" '#### Assuming your images are jpegs
    Response.BinaryWrite rs("ImageBlob") 
    

    这有帮助吗?

    【讨论】:

    • 您好,我遇到的问题是图像将显示在主页上,因此页面顶部不会有查询字符串
    • 请查看网站 www.echo-ms.com,屏幕底部的缩略图(即 echo)需要更改为与数据库中的该新闻文章相关的图像
    • 你能发布你的代码吗?我会看看 - 或者你得到任何错误?
    • 好的,我刚刚查看了您的代码 - 当您激活此链接时您会看到什么 - echo-ms.com/<yourdirectory>/image_display.asp?PhotoID=627 - 将 替换为您的网站文件夹 - 如果这里有错误,请告诉我如果这可行,那么它们将显示在您的主页上,也可以尝试使用 jpeg 而不是 gif
    • 我得到的错误是 Microsoft VBScript 运行时错误 '800a01a8' Object required: 'rsNews' /image_display.asp, line 18
    【解决方案3】:

    好的,根据您的 cmets,您需要创建一个新的 asp 页面,我们将其命名为 getImage.asp。

    您将在 HTML 中引用该图像,如下所示:

    <img src="getImage.asp?ID=<%=rsNews("Image_ID") %>">
    

    其中getImage.asp是这样的(注意response.BinaryWrite的使用:

    Dim ImageID
    ImageID = request.querystring("ID")
    Set rs = db.Execute("SELECT ImageBlob FROM table WHERE ID = " & ImageID)
    
    Response.Expires = 0 
    Response.Buffer = TRUE 
    Response.Clear 
    Response.ContentType = "image/jpeg" '#### Assuming your images are jpegs
    Response.BinaryWrite rs("ImageBlob") 
    

    【讨论】:

    • 好的,我要去试一试,我会告诉你我的进展情况
    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2013-05-19
    相关资源
    最近更新 更多