File Directory ASP.Net Tutorial

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    protected void btnAdd_Click(object sender, EventArgs e)
    {
        if (upFile.HasFile)
        {
            srcFiles.Insert();
        }
    }


FileUpload Database

    
    

            id="lblFile"
        Text="Word Document:"
        AssociatedControlID="upFile"
        Runat="server" />
            id="upFile"
        Runat="server" />
            id="btnAdd"
        Text="Add Document"
        OnClick="btnAdd_Click"
        Runat="server" />
    
            id="rptFiles"
        DataSourceID="srcFiles"
        Runat="server">
        
        
        

        
        

  •                     id="lnkFile"
                Text='<%#Eval("FileName")%>'
                NavigateUrl='<%#Eval("Id", "~/FileHandler.ashx?id={0}")%>'
                Runat="server" />        

  •         

            
            
            

        
                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">
            
                
                
            

        
        

        


    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;
            }
        }
    }