ASP.NET2.0中将图片上传到SQL Server数据库的代码实例
为了安全和图片内容保护,往往需要把图片存储在数据库里.因为直接把图片存放在硬盘里,很容易被盗走的,所以把图片以二进制流的形式存储在数据里,这样别人便不能轻易地盗链我们的图片了.本文列出将文字和图片上传到SQL Server数据库的方法。
SQL Server数据库代码
<%@ Page Language="C#" EnableViewState="true" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
string strCnn = "Persist Security Info=False;User ID=sa;Password=;Initial Catalog=Book;Server=(local);";
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语句,创建参数
SqlConnection myConnection = new SqlConnection(strCnn);
SqlCommand command = new SqlCommand("INSERT INTO UserPhoto (UserName,ContentType,Photo)" +
"VALUES (@UserName,@ContentType,@Photo)", myConnection);
command.Parameters.AddWithValue("@UserName", TextBox1.Text);
command.Parameters.AddWithValue("@ContentType", fileType);
command.Parameters.AddWithValue("@Photo", 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( )
{
SqlConnection myConnection = new SqlConnection(strCnn);
SqlCommand myCommand = new SqlCommand("SELECT * FROM UserPhoto Order By id DESC", myConnection);
try
{
myConnection.Open();
GridView1.DataSource = myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
GridView1.DataBind();
}
catch (Exception SQLexc)
{
Response.Write("提取数据时出现错误:" + SQLexc.ToString());
}
}
protected string FormatURL( object strArgument )
{
return "ReadImage.aspx?id=" + strArgument.ToString();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>上传文件到数据库</title>
</head>
<body>
<form id="MengXianhui" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<%#Eval("UserName") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<img src="<%#FormatURL(Eval("id")) %>" /></ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<br />
姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<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>
显示图片
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script runat="server">
protected void Page_Load( object sender, EventArgs e )
{
////构建数据库连接,SQL语句,创建参数
//ACCESS数据库使用本注释部分
//string strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Image2Access.mdb");
//OleDbConnection myConnection = new OleDbConnection(strCnn);
//OleDbCommand command = new OleDbCommand("select * from Person Where PersonID =" + Request.QueryString["id"], myConnection);
//myConnection.Open();
//OleDbDataReader dr = command.ExecuteReader();
//if (dr.Read())
//{
// Response.Clear();
// Response.AddHeader("Content-Type", dr["PersonImageType"].ToString());
// Response.BinaryWrite((byte[])dr["PersonImage"]);
//}
//dr.Close();
//myConnection.Dispose();
//构建数据库连接,SQL语句,创建参数
string strCnn = "Persist Security Info=False;User ID=sa;Password=;Initial Catalog=Book;Server=(local);";
SqlConnection myConnection = new SqlConnection(strCnn);
SqlCommand command = new SqlCommand("select * from UserPhoto Where id =" + Request.QueryString["id"], myConnection);
myConnection.Open();
SqlDataReader dr = command.ExecuteReader();
if (dr.Read())
{
Response.Clear();
Response.AddHeader("Content-Type", dr["ContentType"].ToString());
Response.BinaryWrite((byte[])dr["Photo"]);
}
dr.Close();
myConnection.Dispose();
}
</script>
创建SQL数据表语句
CREATE TABLE [UserPhoto] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[UserName] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[ContentType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Photo] [image] NOT NULL ,
CONSTRAINT [PK_UserPhoto] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
最新文章
- 客户端与服务器端对URL字符编码和解 [05-07]
- 高手过招 ASP.NET中防范SQL注入式攻 [12-25]
- ASP.NET2.0 AJAX中调用服务器Webse [11-29]
- ASP.NET中检测浏览器属性的方法及代 [11-29]
- ASP.NET2.0中Web Parts介绍及使用实 [11-29]
- 如何实现ASP.NET网站个性化的元素及 [11-24]
- 自定义控件把脚本文件编译为内嵌资 [11-24]
- ASP.NET2.0向其它网页传递信息的方 [11-24]
- 组合ASP.NET数据控件构建接口强大的 [11-24]
- Asp.net中创建类似Google自动感应的 [11-24]
推荐文章


热点文章
亲密接触ASP.Net(1-14)----站长强
ASP.NET中常用的优化性能方法详解
HTML图像热区基本介绍及实例代码
ASP.NET1.1中如何实现动态树实例
ASP.NET 2.0 ObjectDataSource控
Asp.Net时间格式转换方法
ASP.NET生成静态网页的方法
编程高手谈ASP.NET状态管理之客户
Asp.net页面之间跳转的三种方法比
ASP.NET的 Session 详解
深入分析编译asp.net 2.0项目到d
ASP.NET状态保存的方法详细介绍
ASP.NET性能优化-数据库方面的选
ASP.NET页面间传值方法大集会
实例:利用AJAX和ASP.NET实现简单
探讨ASP.NET的本质之IIS以及进程
ASP.NET用户控件返回事件的原理及
如何用ASP.NET 2.0主题控制网站外
ASP.NET性能优化-页面及控件
使用ASP.NET AJAX实现幻灯片效果
请慎用ASP.Net的validateRequest
ASP.NET2.0全新增加控件之ImageM
教你如何利用ASP.net编写发送Ema
完美教程:Asp.net如何导出pdf格式
ASP.NET2.0中CSS失效解决方案大集
结合工作经验总结asp.net几个常用
深入探讨ASP.NET实现回调实现的步
ASP.NET中如何实现通过对话框方式
asp.net数据校验部分的封装与应用
.NET用户控件基本使用及如何创建

