In this article I will explain with an example, how to save file directly to SQL Server database using the ASP.Net File Upload control in C# and VB.Net.
This article will illustrate how files like images, Word document, Excel document, Portable Document Format (PDF), Text Files can be uploaded, converted into Binary data and the saved into the SQL Server database in ASP.Net.
This article makes use of a table named tblFiles whose schema is defined as follows.
Save Files to SQL Server Database using FileUpload Control
Note: You can download the database table SQL by clicking the download link below.
          Download SQL file
HTML Markup
The HTML Markup contains an ASP.Net FileUpload control, a Button and a Label.
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="Upload" />
<hr />
<asp:Label ID="lblMessage" ForeColor="Green" runat="server" />
You will need to import the following namespaces.
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
Imports System.IO
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Uploading the files and then saving in SQL Server Database table using FileUpload control
The below event handler gets executed when the Upload Button is clicked, the File is fetched from the FileUpload control and it is converted into Binary data i.e. Byte Array.
Finally the File name, the Content Type (MIME type) and the Binary data i.e. Byte Array is inserted into the SQL Server database.
Note: The Content type (MIME type) is very important while downloading the files as it notifies the browser about type of the File.
protected void Upload(object sender, EventArgs e)
    string filename = Path.GetFileName(FileUpload1.PostedFile.FileName);
    string contentType = FileUpload1.PostedFile.ContentType;
    using (Stream fs = FileUpload1.PostedFile.InputStream)
        using (BinaryReader br = new BinaryReader(fs))
            byte[] bytes = br.ReadBytes((Int32)fs.Length);
            string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
                string query = "INSERT INTO tblFiles VALUES (@Name, @ContentType, @Data)";
                using (SqlCommand cmd = new SqlCommand(query))
                    cmd.Connection = con;
                    cmd.Parameters.AddWithValue("@Name", filename);
                    cmd.Parameters.AddWithValue("@ContentType", contentType);
                    cmd.Parameters.AddWithValue("@Data", bytes);
    lblMessage.Text = "File uploaded successfully.";
Protected Sub Upload(sender As Object, e As EventArgs)
    Dim filename As String = Path.GetFileName(FileUpload1.PostedFile.FileName)
    Dim contentType As String = FileUpload1.PostedFile.ContentType
    Using fs As Stream = FileUpload1.PostedFile.InputStream
        Using br As New BinaryReader(fs)
            Dim bytes As Byte() = br.ReadBytes(CType(fs.Length, Integer))
            Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
            Using con As New SqlConnection(constr)
                Dim query As String = "INSERT INTO tblFiles VALUES (@Name, @ContentType, @Data)"
                Using cmd As New SqlCommand(query)
                    cmd.Connection = con
                    cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = filename
                    cmd.Parameters.Add("@ContentType", SqlDbType.VarChar).Value = contentType
                    cmd.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes
                End Using
            End Using
        End Using
    End Using
    lblMessage.Text = "File uploaded successfully."
End Sub
Save Files to SQL Server Database using FileUpload Control