Get the List of All Files From Server Directory in ASP.Net

This article describes how to get the list of all files from a server folder or directory with a download link option in DataList control.

Suppose you have a folder or directory in your ASP.NET server application and you want to show all the files in that directory on the web page with a download link and allow the user to delete files from the server.

Here I will get all the fields from the server directory and display them in the DataList control with an image icon, download link and a delete option. This will work with any type of extension file.

HTML Markup for the UI

Here, I use an ASP.NET DataList control to display the files from the server directory.

<body>

    <form id="form1" runat="server">

    <asp:FileUpload ID="FileUpload1" runat="server" />

    <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="UploadFile" />

    <div style="border: solid 1px #D9DCEA; border-top: none; width: 40%; margin-top: -1px;

        float: right">

        <div style="border-top: none; width: 97%; padding: 5px;">

            <asp:DataList ID="DataListContent" runat="server" OnItemCommand="ButtonDownloadContent"

                RepeatDirection="Vertical" BorderStyle="None" Style="padding: 0px!important">

                <ItemTemplate>

                    <div>

                        <img src='<%# DataBinder.Eval(Container.DataItem,"Icon") %>' id="ImgIcon" />

                        <asp:LinkButton ID="ButtonDownload" runat="server" Style="padding-left: 5px; text-decoration: none"

                            ToolTip="Click here to download" CommandName="Download" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"DownLoadLink") %>'

                            Text=' <%# DataBinder.Eval(Container.DataItem,"FileName") %>'></asp:LinkButton>

                        <asp:LinkButton ID="lnkDelete" Text="Delete" CommandArgument='<%# Eval("DownLoadLink") %>'

                            Style="text-decoration: none; font-size: large; color: red;" runat="server" OnClick="DeleteFile" />

                    </div>

                </ItemTemplate>

            </asp:DataList>

        </div>

    </div>

    </form>

</body>


Getting files from directory.

Here I get all the files from the directory to show in the DataList control.

private void GenerateDownloadLinks()

{

        string path = Server.MapPath("~/UploadFile");

        if (Directory.Exists(path))

        {

 

            DataTable ShowContent = new DataTable();

            ShowContent.Columns.Add("Icon", typeof(string));

            ShowContent.Columns.Add("DownloadLink", typeof(string));

            ShowContent.Columns.Add("FileName", typeof(string));

            DirectoryInfo di = new DirectoryInfo(path);

 

            foreach (FileInfo fi in di.GetFiles())

            {

                DataRow dr = ShowContent.NewRow();

                dr["FileName"] = fi.Name; ;

                dr["DownloadLink"] = Server.MapPath("~/UploadFile/") + fi.Name;

                string ext = Path.GetExtension(fi.FullName);

                switch (ext)

                {

                    case "png":

                        dr["Icon"] = ResolveUrl("~/images/PdfIcon.png");

                        break;

                    case "doc":

                        dr["Icon"] = ResolveUrl("~/images/DocIcon.png");

                        break;

                    case "xls":

                        dr["Icon"] = ResolveUrl("~/images/ExcelIcon.png");

                        break;

                    case "txt":

                        dr["Icon"] = ResolveUrl("~/images/TxtIcon.png");

                        break;

                    case "zip":

                        dr["Icon"] = ResolveUrl("~/images/ZipIcon.png");

                        break;

                }

                DataListContent.DataSource = ShowContent;

                DataListContent.DataBind();

        }

    }

 }

Code for downloading the file:

protected void ButtonDownloadContent(object sender, DataListCommandEventArgs e)
{
        if (e.CommandName == "Download")
        {
            string path = e.CommandArgument.ToString();
            string name = Path.GetFileName(path);
            string ext = Path.GetExtension(path);
            Response.AppendHeader("content-disposition",
                "attachment; filename=" + name);
            Response.ContentType = "application/octet-stream";
            Response.WriteFile(path);
            Response.End();
        }
}

Code for deleting a file from the directory:

protected void DeleteFile(object sender, EventArgs e)
{
        string filePath = (sender as LinkButton).CommandArgument;
        File.Delete(filePath);
        GenerateDownloadLinks();
}

Code for uploading a file from the directory:


protected void UploadFile(object sender, EventArgs e)

{

        string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);

        FileUpload1.PostedFile.SaveAs(Server.MapPath("~/UploadFile/") + fileName);

        Response.Redirect(Request.Url.AbsoluteUri);

}

download-file-in-asp.net.png

Up Next
    Ebook Download
    View all
    Learn
    View all