载入中
自定义HTML载入中... loading
上传到数据库里的图片如何显示出来 [原创 2006-04-24 15:17:07]   
字体变小 字体变大

    上一章里写到如何上传图片或文件到数据库,但是上传图片后,怎么把图片取出来呢?以下是一个取jpg图片的例子。

    还是以上章的数据库为例子,先假设存在数据库里的图片是jpg格式的,并且它的ID号是1。

    在项目里新建一个img.aspx页面,打开img.aspx.cs,在Page_Load事件里加入以下代码:

OleDbConnection myConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+System.Web.HttpContext.Current.Server.MapPath("img.mdb"));
string strSql = "select imgdata from tbImg where id=1";
myConn.Open();
OleDbCommand myCommand = new OleDbCommand(strSql,myConn);
OleDbDataReader myReader = myCommand.ExecuteReader();
if (myReader.Read())
{
 Response.ContentType = "jpg";
 Response.BinaryWrite((byte[])myReader["imgdata"]);
}
myReader.Close();
myConn.Close();

    img.aspx页面的作用就是输出一张图片。但如果直接运行这个网页的话,浏览器会提示下载保存页面。因此,我们还要加一个页面来调用这个页面。

    我们现在再建一个imglook.aspx页面,进入html,加上“<img  src=img.aspx>”,然后编译运行,看看结果怎么样。

    上面我们是假设图片是jpg格式的,其实在实际上运用的时候,有可能是其它不同格式的图片。那么,在上传图片的时候,我们就应该把数据库进行更改一下,加入一个保存图片格式的文本字段,如果图片是jpg格式的话,就在那个字段里写入“jpg”三个字母;如果图片是gif格式的话,就在那个字段里写入“gif”。如此,在输出图片的时候,只要把Response.ContentType设为图片类型即可。如果记录的ID号不是1的话,也可以用“<img src=img.aspx?id=XX>”来传递ID值,然后在img.aspx里获取,请灵活运用,不再多述。

     以下是完整的代码:

img.aspx.cs:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Data.OleDb;

 

namespace test

{

     /// <summary>

     /// img 的摘要说明。

     /// </summary>

     public class img : System.Web.UI.Page

     {

         private void Page_Load(object sender, System.EventArgs e)

         {

              OleDbConnection myConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+System.Web.HttpContext.Current.Server.MapPath("img.mdb"));

              string strSql = "select imgdata from tbImg where id=1";

              myConn.Open();

              OleDbCommand myCommand = new OleDbCommand(strSql,myConn);

              OleDbDataReader myReader = myCommand.ExecuteReader();

              if (myReader.Read())

              {

                   Response.ContentType = "jpg";

                   Response.BinaryWrite((byte[])myReader["imgdata"]);

              }

              myReader.Close();

              myConn.Close();

         }

 

         #region Web 窗体设计器生成的代码

         override protected void OnInit(EventArgs e)

         {

              //

              // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。

              //

              InitializeComponent();

              base.OnInit(e);

         }

        

         /// <summary>

         /// 设计器支持所需的方法 - 不要使用代码编辑器修改

         /// 此方法的内容。

         /// </summary>

         private void InitializeComponent()

         {   

              this.Load += new System.EventHandler(this.Page_Load);

         }

         #endregion

     }

}

 

imglook.aspx:

 

<%@ Page language="c#" Codebehind="imglook.aspx.cs" AutoEventWireup="false" Inherits="test.imglook" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

     <HEAD>

         <title>imglook</title>

         <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">

         <meta name="CODE_LANGUAGE" Content="C#">

         <meta name="vs_defaultClientScript" content="JavaScript">

         <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

     </HEAD>

     <body>

         <form id="Form1" method="post" runat="server">

              <img src=img.aspx>

         </form>

     </body>

</HTML>

 

分类: ASP.net
所属版块: 科技
票数:
什么是“我顶”?
点击数:    评论数:
本文章引用通告地址(TrackBack Ping URL)为:
本文章尚未被引用。
发表评论
大 名:
(不填写则显示为匿名者)
网 址:
(您的网址,可以不填)
标 题:
内 容:
请根据下图中的字符输入验证码:
(您的评论将有可能审核后才能发表)
和讯个人门户 v1.0 | 和讯部落 | 客服中心