
上一章里写到如何上传图片或文件到数据库,但是上传图片后,怎么把图片取出来呢?以下是一个取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 "-//W
<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>
: 科技

