Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / web / ASP.NET

ASP.NET File Upload Control - Provide Same Look and Feel in All Browsers

4.00/5 (1 vote)
1 May 2014CPOL 26.9K  
ASP.NET File Upload Control- Provide Consistant Look and Feel in All Browsers

Introduction

Every ASP.NET developer must have used the ASP.NET File Upload control. The problem with this control is, it was rendered slightly differently in most popular browsers. In this tip, I am going to show a little alternative for this problem.

Using the Code

Just copy the below code in an ASPX file.

HTML
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Uploader Demo</title>
    <script src="Scripts/jquery-1.8.2.js"></script>
    <script language="javascript" type="text/javascript">
        function hookFileClick() {
            // Initiate the File Upload Click Event
            document.getElementById('fileUploader').click();
        }
        
        function fnOnChange(obj)
        {
            document.getElementById("txtUploadFile").value = obj.value;
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <input type="text" runat="server" 
            id="txtUploadFile" disabled="disabled" />
            <input type="button" runat="server" 
            id="btnUpload" value="Browse" 
            onclick="hookFileClick()"  />
            <asp:Button runat="server" 
            ID="btnUploadFileToServer" 
            Text="Upload File To Server" 
            OnClick="btnUploadFileToServer_Click" />
            <asp:FileUpload runat="server" 
            ID="fileUploader" Style="visibility: hidden;" 
            onchange="fnOnChange(this);" />
        </div>
    </form>
</body>
</html>   

I just have one text box (txtUploadFile) and a button (btnUpload) which simulates like a File upload control. Also, I have a file upload server control (fileUploader) in which the visibility is set as false. I just hook up the file upload server control click event in first button's click event. So when you click the first button, it will open the file open dialog. These are all done using JavaScript. As a result, what you get is a consistent UI for this control.

EDIT

I have slightly changed the code. That is, I have added "onchange" event for the File Upload Control. Initially, I have attached the event, which is not working in Internet Explorer 11. This one works fine in all browsers! :)

The below code-behind code is used to save the file into the server:

C#
protected void btnUploadFileToServer_Click(object sender, EventArgs e)
 { 
      string strFileName = fileUploader.FileName; 
      fileUploader.SaveAs("d:\\Somepath\\ " + strFileName); 
 }

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)