关于把图片存入ACCESS形成二进制文件进行图片绑定显示(c#版)
2007-12-18 11:20
716 查看
注意:本演示需要创建两个aspx文件
一个为default2.aspx 一个为default3.aspx
一个数据库文件 表名为photo ID:自动增长类型 Image:ole类型;ImageType:文本类型
(本演示代码为网上复制粘贴,本人只是进行了详细说明和组织)
-----------------------------------------------------------
dafault2.aspx 代码如下
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<img src="<%#FormatURL(Eval("ID")) %>" /></ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<br />
选择照片:<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="上传" OnClick="Button1_Click"></asp:Button>
<p>
<asp:Label ID="Msg" runat="server" ForeColor="Red"></asp:Label></p>
</form>
</body>
</html>
---------------------------------------------------------------------------
default2.aspx 中cs代码如下
using System.Data.OleDb;
protected void Button1_Click(object sender, EventArgs e)
{
System.IO.Stream fileDataStream = FileUpload1.PostedFile.InputStream;
if (fileDataStream.Length < 1)
{
Msg.Text = "请选择文件。";
return;
}
//得到文件大小
int fileLength = FileUpload1.PostedFile.ContentLength;
//创建数组
byte[] fileData = new byte[fileLength];
//把文件流填充到数组
fileDataStream.Read(fileData, 0, fileLength);
//得到文件类型
string fileType = FileUpload1.PostedFile.ContentType;
//构建数据库连接,SQL语句,创建参数
string strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("sc.mdb");
OleDbConnection myConnection = new OleDbConnection(strCnn);
OleDbCommand command = new OleDbCommand("INSERT INTO photo(ImageType,[Image])" +
"VALUES (@ImageType,@Image)", myConnection);
//注意Image是关键字 必须用[]引起
command.Parameters.AddWithValue("@ImageType", fileType);
command.Parameters.AddWithValue("@Image", fileData);
//打开连接,执行查询
myConnection.Open();
command.ExecuteNonQuery();
myConnection.Close();
Response.Redirect(Request.RawUrl);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
string strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ Server.MapPath("sc.mdb");
OleDbConnection myConnection = new OleDbConnection(strCnn);
OleDbCommand myCommand = new OleDbCommand("SELECT * FROM photo", myConnection);
try
{
myConnection.Open();
GridView1.DataSource = myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
GridView1.DataBind();
}
catch (OleDbException SQLexc)
{
Response.Write("提取数据时出现错误:" + SQLexc.ToString());
}
}
protected string FormatURL(object strArgument)
{
return "Default3.aspx?id=" + strArgument.ToString();
}
------------------------------------------------------------------------------
default3.aspx (cs代码如下)
using System.Data.OleDb;
protected void Page_Load(object sender, EventArgs e)
{
string strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("sc.mdb");
OleDbConnection myConnection = new OleDbConnection(strCnn);
OleDbCommand command = new OleDbCommand("select * from photo Where ID =" + Request.QueryString["id"], myConnection);
myConnection.Open();
OleDbDataReader dr = command.ExecuteReader();
if (dr.Read())
{
Response.Clear();
Response.AddHeader("Content-Type", dr["ImageType"].ToString());
Response.BinaryWrite((byte[])dr["Image"]);
}
dr.Close();
myConnection.Dispose();
}
一个为default2.aspx 一个为default3.aspx
一个数据库文件 表名为photo ID:自动增长类型 Image:ole类型;ImageType:文本类型
(本演示代码为网上复制粘贴,本人只是进行了详细说明和组织)
-----------------------------------------------------------
dafault2.aspx 代码如下
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<img src="<%#FormatURL(Eval("ID")) %>" /></ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<br />
选择照片:<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="上传" OnClick="Button1_Click"></asp:Button>
<p>
<asp:Label ID="Msg" runat="server" ForeColor="Red"></asp:Label></p>
</form>
</body>
</html>
---------------------------------------------------------------------------
default2.aspx 中cs代码如下
using System.Data.OleDb;
protected void Button1_Click(object sender, EventArgs e)
{
System.IO.Stream fileDataStream = FileUpload1.PostedFile.InputStream;
if (fileDataStream.Length < 1)
{
Msg.Text = "请选择文件。";
return;
}
//得到文件大小
int fileLength = FileUpload1.PostedFile.ContentLength;
//创建数组
byte[] fileData = new byte[fileLength];
//把文件流填充到数组
fileDataStream.Read(fileData, 0, fileLength);
//得到文件类型
string fileType = FileUpload1.PostedFile.ContentType;
//构建数据库连接,SQL语句,创建参数
string strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("sc.mdb");
OleDbConnection myConnection = new OleDbConnection(strCnn);
OleDbCommand command = new OleDbCommand("INSERT INTO photo(ImageType,[Image])" +
"VALUES (@ImageType,@Image)", myConnection);
//注意Image是关键字 必须用[]引起
command.Parameters.AddWithValue("@ImageType", fileType);
command.Parameters.AddWithValue("@Image", fileData);
//打开连接,执行查询
myConnection.Open();
command.ExecuteNonQuery();
myConnection.Close();
Response.Redirect(Request.RawUrl);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
string strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ Server.MapPath("sc.mdb");
OleDbConnection myConnection = new OleDbConnection(strCnn);
OleDbCommand myCommand = new OleDbCommand("SELECT * FROM photo", myConnection);
try
{
myConnection.Open();
GridView1.DataSource = myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
GridView1.DataBind();
}
catch (OleDbException SQLexc)
{
Response.Write("提取数据时出现错误:" + SQLexc.ToString());
}
}
protected string FormatURL(object strArgument)
{
return "Default3.aspx?id=" + strArgument.ToString();
}
------------------------------------------------------------------------------
default3.aspx (cs代码如下)
using System.Data.OleDb;
protected void Page_Load(object sender, EventArgs e)
{
string strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("sc.mdb");
OleDbConnection myConnection = new OleDbConnection(strCnn);
OleDbCommand command = new OleDbCommand("select * from photo Where ID =" + Request.QueryString["id"], myConnection);
myConnection.Open();
OleDbDataReader dr = command.ExecuteReader();
if (dr.Read())
{
Response.Clear();
Response.AddHeader("Content-Type", dr["ImageType"].ToString());
Response.BinaryWrite((byte[])dr["Image"]);
}
dr.Close();
myConnection.Dispose();
}
相关文章推荐
- C# 使用FileUpload控件上传图片,将文件转换成二进制进行存储与读取
- asp.net FileUpload 控件上传文件 以二进制的形式存入数据库并将图片显示出来
- C#对二进制数据进行拼接平移补位,并用BinaryWriter写入文件中
- C# 读写ACCESS的OLE对象,演示图片与长文件的读写
- C#将image中的显示的图片转换成二进制
- C# wpf image绑定viewModel没有显示图片
- 关于Android R文件的坑。本地图片资源id存了数据库,一开始显示正常,后来都乱序了。
- [转].NET下对二进制文件进行加密解密(C#)
- 用ASP.net 的GridView控件分页显示图片,并历遍给定的文件夹中的文件绑定到GridView控
- C# Access 二进制文件读写
- 使用base64对图片的二进制进行编码,使其可以利用ajax进行显示
- C# extjs 图片、附件以二进制形式存储至数据库,图片显示,附件下载
- 关于使用Eclipse导出jar文件时图片不能显示的问题
- C# 文件里的类不能进行设计,因此未能为该文件显示设计器
- C#将image中的显示的图片转换成二进制
- VFP将图片或其他文件保存到SQL Server的Text类型字段或者Access的备注字段中,并可以还原或显示
- 将C语言编译成DLL并用C#进行调用以及关于从C#传输中文路径到C的DLL中打开文件的问题
- Asp.net(c#)将数据库中以二进制存的图片显示出来
- 【转载】关于TreeView和数据库如何进行绑定显示
- Java实现将二进制文件显示为图片(SU中的ximage)