<% @Import Namespace="System" %>
<% @Import Namespace="System.IO" %>
<% @Import Namespace="System.Data" %>
<% @Import Namespace="System.Data.OleDb" %>
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public void Button_Submit(System.Object sender, System.EventArgs e)
{
// HttpPostedFile对象,用于读取图象文件属性
HttpPostedFile UpFile = UP_FILE.PostedFile;
// FileLength 变量存储图片的字节大小
int FileLength = UpFile.ContentLength;
try
{
if (FileLength == 0)
{
txtMessage.Text = "<b>您未选择上传的文件</b>";
}
else
{
// 创建存储图片文件的临时 Byte 数组
Byte[] FileByteArray = new Byte[FileLength];
// 建立数据流对象
Stream StreamObject = UpFile.InputStream;
// 读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
StreamObject.Read(FileByteArray,0,FileLength);
// 数据库操作
string ConnStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("img.mdb");
string query = "INSERT INTO ImageTable (ImageData, ImageContentType, ImageSize) VALUES (@ImageData, @ImageContentType, @ImageSize)";
OleDbCommand myCommand = new OleDbCommand(query, new OleDbConnection(ConnStr));
// 添加各项参数并赋值
myCommand.Parameters.Add("@ImageData", OleDbType.Binary);
myCommand.Parameters.Add("@ImageContentType", OleDbType.VarChar, 50);
myCommand.Parameters.Add("@ImageSize", OleDbType.BigInt);
myCommand.Parameters["@ImageData"].Value = FileByteArray;
myCommand.Parameters["@ImageContentType"].Value = UpFile.ContentType;
myCommand.Parameters["@ImageSize"].Value = FileLength;
// 执行数据库操作
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
}
}
catch (Exception ex)
{
txtMessage.Text = ex.Message.ToString();
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>asp.net保存图片到数据库中</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h3>保存图片到access数据库示例</h3>
请选择要上传的图片:<input id="UP_FILE" type="file" size="24" name="UP_FILE" runat="server">
<br><br>
<asp:button id="SubmitButton" Runat="server" Text="上传图片" Width="239" onclick="Button_Submit">
</asp:button>
<br><br>
<asp:label id="txtMessage" Runat="server" ForeColor="red"></asp:label>
<br>
</div>
</form>
</body>
</html>
读取图片:
<img src="showimg.aspx?imgid=1">
string ConnStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("img.mdb");
string query = "SELECT * FROM imagetable where imgid="+Request["imgid"];
OleDbCommand myCommand = new OleDbCommand(query, new OleDbConnection(ConnStr));
myCommand.Connection.Open();
OleDbDataReader dr = myCommand.ExecuteReader();
if(dr.Read())
{
Response.ContentType = (string)dr["ImageContentType"];
Response.OutputStream.Write((byte[])dr["ImageData"], 0, (int)dr["ImageSize"]);
}
dr.Close();
myCommand.Connection.Close();