Skip to main content

asp.net - How to filter file extension in FileUpload control

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

FileUpload control does not save files automatically to the server. FileUpload control's SaveAs() method allows us to save client-uploaded files to the web server file system. SaveAs() method needs to pass a parameter named 'filename'. By default, FileUpload control uploads any valid type file from the client machine.

Sometimes .net developers need to restrict file type to upload. Such as in an application we can allow users to upload only JPEJ image files. Next, paragraphs describe how can we filter extensions when uploading a file to a web server.

First, we specify the web server folder to save the uploaded file. Second, we check the FileUpload control contains a file by FileUpload HasFile property. This method validates FileUpload control in server-side code. Third, we get the uploaded file's extension using Path.GetExtension() method. this method exists in the 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 successful. 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 demonstrates to us how we can filter file extension when uploading files to the web server from the client browser.
FileUpload.aspx

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>

<!DOCTYPE html>

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

Popular posts from this blog

Restricting Jetpack Compose TextField to Numeric Input Only

Jetpack Compose has revolutionized Android development with its declarative approach, enabling developers to build modern, responsive UIs more efficiently. Among the many components provided by Compose, TextField is a critical building block for user input. However, ensuring that a TextField accepts only numeric input can pose challenges, especially when considering edge cases like empty fields, invalid characters, or localization nuances. In this blog post, we'll explore how to restrict a Jetpack Compose TextField to numeric input only, discussing both basic and advanced implementations. Why Restricting Input Matters Restricting user input to numeric values is a common requirement in apps dealing with forms, payment entries, age verifications, or any data where only numbers are valid. Properly validating input at the UI level enhances user experience, reduces backend validation overhead, and minimizes errors during data processing. Compose provides the flexibility to implement ...

jetpack compose - TextField remove underline

Compose TextField Remove Underline The TextField is the text input widget of android jetpack compose library. TextField is an equivalent widget of the android view system’s EditText widget. TextField is used to enter and modify text. The following jetpack compose tutorial will demonstrate to us how we can remove (actually hide) the underline from a TextField widget in an android application. We have to apply a simple trick to remove (hide) the underline from the TextField. The TextField constructor’s ‘colors’ argument allows us to set or change colors for TextField’s various components such as text color, cursor color, label color, error color, background color, focused and unfocused indicator color, etc. Jetpack developers can pass a TextFieldDefaults.textFieldColors() function with arguments value for the TextField ‘colors’ argument. There are many arguments for this ‘TextFieldDefaults.textFieldColors()’function such as textColor, disabledTextColor, backgroundColor, cursorC...

jetpack compose - Image clickable

Compose Image Clickable The Image widget allows android developers to display an image object to the app user interface using the jetpack compose library. Android app developers can show image objects to the Image widget from various sources such as painter resources, vector resources, bitmap, etc. Image is a very essential component of the jetpack compose library. Android app developers can change many properties of an Image widget by its modifiers such as size, shape, etc. We also can specify the Image object scaling algorithm, content description, etc. But how can we set a click event to an Image widget in a jetpack compose application? There is no built-in property/parameter/argument to set up an onClick event directly to the Image widget. This android application development tutorial will demonstrate to us how we can add a click event to the Image widget and make it clickable. Click event of a widget allow app users to execute a task such as showing a toast message by cli...