asp.net c# tutorials and examples code for web developers

How to filter extension in asp.net FileUpload control

Upload file with specific extension
FileUpload is an asp.net web server control that allow users to upload a file to web server from their local computer file system.

FileUpload control does not save file automatically to the server. FileUpload control's SaveAs() method allow us to save client uploaded files to web server file system. SaveAs() method need to pass a parameter named 'filename'. by default, FileUpload control upload any valid type file from client machine.

sometimes .net developers need to restricted file type to upload. such as in an application we can allow users to upload only JPEJ image file. next paragraphs describe us how can we filter extension when uploading a file to web server.

first we specify the web server folder to save uploaded file. second we check the FileUpload control contains a file by FileUpload HasFile property. this method validate FileUpload control in server side code. third we get the uploaded file's extension using Path.GetExtension() method. this method exists in System.IO namespace.

next we check this extension is in our allowed file extensions. if the client's uploaded file extension is .jpg and our allowed file extensions are .jpg and .png then the file upload will be success. if the client file extension is .jpg and our accepted file extension is .doc then file uploading will be failed.

the following asp.net c# example code demonstrate us how can we filter file extension when uploading file to web server from client browser.
FileUpload.aspx
<%@ 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 Button1_Click(object sender, System.EventArgs e) { 
        string uploadFolder = Request.PhysicalApplicationPath+"UploadFolder\\" ;
        if (FileUpload1.HasFile)
        {
            string extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
            if (extension.ToLower() == ".jpg")
            {

                FileUpload1.SaveAs(uploadFolder + FileUpload1.FileName);
                Label1.Text = "File uploaded successfully: " + FileUpload1.PostedFile.FileName;
                string imageSrc = "~/UploadFolder/" + FileUpload1.PostedFile.FileName;
                Image1.ImageUrl = imageSrc;
                Image1.BorderWidth = 2;
                Image1.BorderColor = System.Drawing.Color.SeaGreen;

            }
            else
            {
                Label1.Text = "This file extension not permitted: " + extension;
            }
        }
        else
        {
            Label1.Text = "Please select a file.";
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>asp.net FileUpload example: how to upload file with specific extension</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2 style="color:Red">asp.net FileUpload example: specific file extension</h2>
        <asp:Label 
             ID="Label1" 
             runat="server" 
             Font-Size="Large"
             ForeColor="SeaGreen"
             >
        </asp:Label>
        <br /><br />
        <asp:Label 
             ID="Label2" 
             runat="server" 
             ForeColor="DodgerBlue"
             Text="Choose a file for upload."
             Font-Bold="true"
             >
        </asp:Label>
        <br />
        <asp:FileUpload 
             ID="FileUpload1" 
             runat="server" 
             BackColor="DodgerBlue" 
             ForeColor="AliceBlue" 
             />
        <asp:Button 
             ID="Button1" 
             runat="server" 
             Font-Bold="true" 
             ForeColor="DodgerBlue" 
             OnClick="Button1_Click"
             Text="Upload Now"
             />   
        <br /><br />
        <asp:Image ID="Image1" runat="server" />                       
        
    </div>
    </form>
</body>
</html>
Related asp.net example