Mega Code Archive

 
Categories / ASP.Net Tutorial / File Directory
 

Saving uploaded Files to a Database

<%@ Page Language="C#" %> <%@ Import Namespace="System.IO" %> <!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 btnAdd_Click(object sender, EventArgs e)     {         if (upFile.HasFile)         {             srcFiles.Insert();         }     } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <title>FileUpload Database</title> <body>     <form id="form1" runat="server">     <div>     <asp:Label         id="lblFile"         Text="Word Document:"         AssociatedControlID="upFile"         Runat="server" />     <asp:FileUpload         id="upFile"         Runat="server" />     <asp:Button         id="btnAdd"         Text="Add Document"         OnClick="btnAdd_Click"         Runat="server" />     <hr />     <asp:Repeater         id="rptFiles"         DataSourceID="srcFiles"         Runat="server">         <HeaderTemplate>         <ul class="fileList">         </HeaderTemplate>         <ItemTemplate>         <li>         <asp:HyperLink             id="lnkFile"             Text='<%#Eval("FileName")%>'             NavigateUrl='<%#Eval("Id", "~/FileHandler.ashx?id={0}")%>'             Runat="server" />        </li>         </ItemTemplate>         <FooterTemplate>         </ul>         </FooterTemplate>     </asp:Repeater>     <asp:SqlDataSource         id="srcFiles"         ConnectionString="Server=.\SQLExpress;Integrated Security=True;             AttachDbFileName=|DataDirectory|FilesDB.mdf;User Instance=True"         SelectCommand="SELECT Id,FileName FROM Files"         InsertCommand="INSERT Files (FileName,FileBytes) VALUES (@FileName,@FileBytes)"         Runat="server">         <InsertParameters>             <asp:ControlParameter Name="FileName" ControlID="upFile" PropertyName="FileName" />             <asp:ControlParameter Name="FileBytes" ControlID="upFile" PropertyName="FileBytes" />         </InsertParameters>     </asp:SqlDataSource>     </div>     </form> </body> </html> Table Structure Column Name       Data Type Id               Int (IDENTITY) FileName       NVarchar(50) FileBytes       Varbinary(max) File: FileHandler.ashx <%@ WebHandler Language="C#" Class="FileHandler" %> using System; using System.Web; using System.Data; using System.Data.SqlClient; public class FileHandler : IHttpHandler {     const string conString = @"Server=.\SQLExpress;Integrated Security=True;         AttachDbFileName=|DataDirectory|FilesDB.mdf;User Instance=True";     public void ProcessRequest (HttpContext context) {         SqlConnection con = new SqlConnection(conString);         SqlCommand cmd =  new SqlCommand("SELECT FileBytes FROM Files WHERE Id=@Id", con);         cmd.Parameters.AddWithValue("@Id", context.Request["Id"]);         using (con)         {             con.Open();             byte[] file = (byte[])cmd.ExecuteScalar();             context.Response.BinaryWrite(file);         }     }     public bool IsReusable {         get {             return false;         }     } }