ASP.NET2.0中将文件上传到数据库

来源:互联网 发布:手机看工程图纸软件 编辑:程序博客网 时间:2024/06/10 01:38

此问题经常被人问,本文列出将文字和图片上传到数据库的方法。包括Access数据库和SQL Server数据库。

Access数据库代码

<%@ Page Language="C#" EnableViewState="true" %><%@ Import Namespace="System.Data.OleDb" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">  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("Image2Access.mdb");    OleDbConnection myConnection = new OleDbConnection(strCnn);    OleDbCommand command = new OleDbCommand("INSERT INTO Person (PersonName,PersonEmail,PersonSex,PersonImageType,PersonImage)" +    "VALUES (@PersonName,@PersonEmail,@PersonSex,@PersonImageType,@PersonImage)", myConnection);    command.Parameters.AddWithValue("@PersonName",TextBox1.Text);    command.Parameters.AddWithValue("@PersonEmail", "mengxianhui@dotnet.aspx.cc");    command.Parameters.AddWithValue("@paramPersonSex", "男");    command.Parameters.AddWithValue("@PersonImageType", fileType);    command.Parameters.AddWithValue("@PersonImage", 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("Image2Access.mdb");    OleDbConnection myConnection = new OleDbConnection(strCnn);    OleDbCommand myCommand = new OleDbCommand("SELECT * FROM Person", 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 "ReadImage.aspx?id=" + strArgument.ToString();  }  </script><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">  <title>上传文件到数据库</title></head><body>  <form id="MengXianhui" runat="server">    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">      <Columns>        <asp:TemplateField>          <ItemTemplate>            <%#Eval("PersonName") %>          </ItemTemplate>        </asp:TemplateField>        <asp:TemplateField>          <ItemTemplate>            <%#Eval("PersonEmail") %>          </ItemTemplate>        </asp:TemplateField>        <asp:TemplateField>          <ItemTemplate>            <%#Eval("PersonSex") %>          </ItemTemplate>        </asp:TemplateField>        <asp:TemplateField>          <ItemTemplate>            <img src="<%#FormatURL(Eval("PersonID")) %>" /></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>

 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

原文地址:http://dotnet.aspx.cc/article/17612afb-3fc0-4fb9-bfa9-00cba28336e9/read.aspx

原创粉丝点击