Asp.Net上传文件到Access数据中,并从数据库中读取文件并保存

首先在Access中建立一个表结构为:

表名:img

字段名 字段类型 说明

ID 自动编号 系统分配ID值

Imgtype 文本 上传文件类型

imgdata OLE对象 上传文件数据

aspx 页面主要代码

<form runat="server">

<div>

<asp:FileUpload runat="server" Width="345px" />

<asp:Button runat="server"

Text="上传到数据库" onclick="Button1_Click" />

<asp:Button runat="server" Text="读取数据库到文件"

onclick="Button2_Click" /><asp:TextBox runat="server"></asp:TextBox>

</div>

</form>

Cs文件代码

System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Password=;User );

protected void Button1_Click(object sender, EventArgs e)

{

if (!IsValid) return;

if (FileUpload1.PostedFile.FileName != "")

{

int datalength = this.FileUpload1.PostedFile.ContentLength; //获取上传文件大小

byte[] databuffer = new byte[datalength]; //建立文件字节数组,缓存空间

System.IO.Stream objstream = this.FileUpload1.PostedFile.InputStream;

objstream.Read(databuffer, 0, datalength);

string ext = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName);

System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();

cmd.Connection = conn;

cmd.CommandText = "insert into img(imgtype,imgdata) values(@imgtype,@imgdata)";

cmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@imgtype", System.Data.OleDb.OleDbType.VarChar)).Value = ext;

cmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@imgdata", System.Data.OleDb.OleDbType.Binary)).Value = databuffer;

conn.Open();

cmd.ExecuteNonQuery();

conn.Close();

}

}

protected void Button2_Click(object sender, EventArgs e)

{

System.Data.OleDb.OleDbDataReader dr = null;

System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();

byte[] FileData=null;

string type="";

cmd.CommandText = "select imgdata,imgtype from img where ;

cmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@ID", System.Data.OleDb.OleDbType.Integer)).Value = TextBox1.Text.Trim();

cmd.Connection = conn;

conn.Open();

dr = cmd.ExecuteReader();

if (dr.Read())

{

FileData = (byte[])dr["imgdata"];

type=dr["imgtype"].ToString();

}

dr.Close();

conn.Close();

System.IO.FileStream fs = new System.IO.FileStream("d:\\aaa" + type, System.IO.FileMode.Create);

System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs);

bw.Write(FileData, 0, FileData.Length);

bw.Close();

}

代码很简单,这里只做了一个演示,保存文件名为固定名称,其实可以在数据库里加入一个文件名了字段,这样就可以解决