Click here to Skip to main content
15,878,959 members
Articles / Web Development / ASP.NET

Multiple File Upload Custom Control in ASP.NET

Rate me:
Please Sign up or sign in to vote.
3.44/5 (9 votes)
23 Sep 2009CPOL1 min read 70.4K   3.1K   26   19
There is already a control available in .NET for single upload. There are cases where we actually have requirement of multiple and bulk select upload of files in application so as to achieve this functionality I came up with the solution that will help developer a lot..

Introduction

We have a scenario where we want to have multiple file upload with one click selection criteria. After a long search in Google, I landed up on The Code Project with the desired solution.The solution I got was not straight forward and it took me tooth and nail to fit the solution in my architecture. So I made some changes to the code that helped me to achieve the multiple upload functionality with the expected output.

Using the Code

The steps that need to be followed so as to make this work for you, are as follows:

  1. Copy Upload.cs and Upload2.cs in your app_code.
  2. Reference flash.dll in your website. This will appear in bin folder.
  3. In the page load of your code behind, copy this code:
    C#
    protected void Page_Load(object sender, EventArgs e)
        {
            // allows the JavaScript function to do a postback 
            // and call the onClick method 
            // associated with the linkButton LinkButton1. 
            string jscript = "function UploadComplete()
    	{" + ClientScript.GetPostBackEventReference(LinkButton1, "") + "};";       
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), 
    			"FileCompleteUpload", jscript, true); 
        }
  4. Add this tag at the top of the ASPX page where you want your control to display:
    XML
    &lt %@ Register Assembly="FlashUpload" Namespace="FlashUpload" 
    	TagPrefix="FlashUpload" %&gt 
  5. Add the below ASPX custom tags inside form tags as follows:
    XML
    < FlashUpload:FlashUpload ID="flashUpload" runat="server" UploadPage="Upload2.axd"
    	OnUploadComplete="UploadComplete()" FileTypeDescription="All Files" 
    	FileTypes="*.gif;*.doc; 
    
    *.png; *.jpg; *.jpeg"
    	UploadFileSizeLimit="1800000" TotalUploadSizeLimit="2097152" />
     	< asp:LinkButton ID="LinkButton1" runat="server" 
    	OnClick="LinkButton1_Click" > </ asp:LinkButton >
  6. Add the below given tags under system.web in web.config file:
    XML
    <httpHandlers>
    	<remove verb="*" path="*.asmx"/>
    	<add verb="*" path="*.asmx" validate="false" 
    	type="System.Web.Script.Services.ScriptHandlerFactory, 
    	System.Web.Extensions, Version=1.0.61025.0, 
    	Culture=neutral, PublicKeyToken=null"/>
    	<add verb="*" path="*_AppService.axd" validate="false" 
    	type="System.Web.Script.Services.ScriptHandlerFactory, 
    	System.Web.Extensions, Version=1.0.61025.0, 
    	Culture=neutral, PublicKeyToken=null"/>
    	<add verb="GET,HEAD" path="ScriptResource.axd" 
    	type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, 
    	Version=1.0.61025.0, Culture=neutral, 
    	PublicKeyToken=null" validate="false"/>
    	< remove verb="POST,GET" path="Upload.axd"/>
    	< add verb="POST,GET" path="Upload.axd" type="Upload"/>
    	< remove verb="POST,GET" path="Upload2.axd"/>
    	< add verb="POST,GET" path="Upload2.axd" type="Upload"/>
    </httpHandlers>

Specify types of files you require need to be uploaded to web server folder. So we are all set and done. Build your application and run the machine.

Conclusion

The above approach may have some implication on security that may require to give access rights to the folder in webserver where your files are going to be saved. Remember this if in production this functionality goes for a toss.

Reference

The reference article that helped me to achieve this milestone was "Multiple File Upload With Progress Bar Using Flash and ASP.NET". Thanks to the author darick_c.

History

  • 23rd September, 2009: Initial post

License

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


Written By
Technical Lead
Australia Australia
Whatsup-->Exploring--> MVC/HTML5/Javascript & Virtualization.......!
www.santoshpoojari.blogspot.com

Comments and Discussions

 
Questionflash upload end of support and its replacement Pin
omkar omble26-Jan-23 1:03
omkar omble26-Jan-23 1:03 
Questionon upload file not found - 404 Pin
jorgesomers10-Oct-15 9:12
jorgesomers10-Oct-15 9:12 
QuestionError in loading page Pin
Morteza Karimi24-Apr-13 2:09
Morteza Karimi24-Apr-13 2:09 
QuestionDo you have a version for Production server deployment Pin
AmarjeetSinghMatharu11-Dec-12 1:53
AmarjeetSinghMatharu11-Dec-12 1:53 
QuestionHttp I/O error Pin
Member 393135026-Mar-12 20:20
Member 393135026-Mar-12 20:20 
QuestionError: I/O Error: Error #2038 and HTTP Error: status code 302 Pin
Sardorious10-Feb-12 22:35
Sardorious10-Feb-12 22:35 
AnswerRe: Error: I/O Error: Error #2038 and HTTP Error: status code 302 Pin
elmonalgotas23-Apr-12 20:30
elmonalgotas23-Apr-12 20:30 
Generalwidth / height? Pin
res_web13-Jul-11 5:51
res_web13-Jul-11 5:51 
Generalerror Pin
RuXiaoMai21-Apr-11 5:40
RuXiaoMai21-Apr-11 5:40 
I got error: Could not load type 'Upload' on web.config
<add verb="POST,GET" path="Upload.axd" type="upload">
GeneralRe: error Pin
res_web13-Jul-11 5:47
res_web13-Jul-11 5:47 
Generalreally good article Pin
Member 37653578-Jul-10 10:27
Member 37653578-Jul-10 10:27 
GeneralRe: really good article Pin
santosh poojari13-Jul-10 3:37
santosh poojari13-Jul-10 3:37 
Generalhi Pin
Ne7ven10-Jan-10 17:16
Ne7ven10-Jan-10 17:16 
GeneralHi Santhosh, I really appreciate for making it available to all. Pin
srirammanoj7-Oct-09 12:59
srirammanoj7-Oct-09 12:59 
GeneralIt's seems like a 'How to' with fixes Pin
musacj25-Sep-09 1:08
musacj25-Sep-09 1:08 
GeneralMy vote of 2 Pin
Member 415315723-Sep-09 22:54
Member 415315723-Sep-09 22:54 
GeneralMy vote of 1 Pin
N3G4T1V323-Sep-09 7:16
N3G4T1V323-Sep-09 7:16 
GeneralRe: My vote of 1 Pin
santosh poojari23-Sep-09 9:46
santosh poojari23-Sep-09 9:46 
GeneralMy vote of 1 Pin
Seishin#23-Sep-09 2:12
Seishin#23-Sep-09 2:12 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.