How to upload and download the files from the web server


HTML clipboard

There are number of times the user wants to upload some file and want the way to download the files from the server. ASP.net provides the FileUpload control to upload the file to the web server. It provides the easy way to upload the file to the server; the coder has not to write whole logic to read the files and writes to the web server.

Here I will mention how to use the File Upload control and upload the files to the server. I have added one more button to download the file from the server. Response Object provides the AddHeader method where you can mention the different type of Header passed to the client.
Here I have use the content-disposition and attachment attribute, where you can specify the file name which you want to pass to the client. On client web browser will prompt the user to download the file.

Client Side Code: Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<
body>
    <form id="form1" runat="server">
    <div>
        <table border="1" cellspacing="0" cellpadding="0" id="tbl">
            <tbody>
                <tr>
                    <td>
                        <asp:FileUpload ID="FileUpload1" runat="server" BorderStyle="Solid" ForeColor="Black"
                            Width="329px" BackColor="White" />
                    </td>
                </tr>
            </tbody>
        </table>
        <table border="1" cellspacing="0" cellpadding="0" id="tblButton">
            <tbody>
                <tr>
                    <td>
                        <asp:Button ID="btnUpload" Text="Upload" runat="server" OnClick="btnUpload_Click" />
                    </td>
                    <td>
                        <asp:Button ID="btnDownload" Text="Download" runat="server" OnClick="btnDownload_Click" />
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
    </form>
</body>
</
html>

Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnUpload_Click(object sender, EventArgs e)
    {
        String filePath = FileUpload1.FileName;
        String strFileName = "";

        if (FileUpload1.PostedFile != null)
        {
            HttpPostedFile file = FileUpload1.PostedFile;
            //Get the size of the file so you can read the file
            int contentLen = file.ContentLength;
            if (contentLen > 0)
            {
                strFileName = Path.GetFileName(filePath);
                file.SaveAs(Server.MapPath(strFileName));
            }
        }
    }
    protected void btnDownload_Click(object sender, EventArgs e)
    {
        string fileName = "Amazon.txt";
        string filePath = Server.MapPath(fileName);
        Response.Clear();

        Response.AppendHeader("content-disposition", "attachment; filename=" + filePath);
        Response.ContentType = "application/octet-stream";
        Response.WriteFile(filePath);
        Response.Flush();
        Response.End();
    }
}

Hope this will guide how to upload and download the files from the web server.