tags:

views:

2809

answers:

2

I am working on a ASP.NET app and i have a need to post back to the server after a file is chosen in a FileUpload control without having to have the user explicitly click a 'submit' button. Is this possible? and if so, how?

+4  A: 

I'm assuming you want to make the upload start right away. If so, you should react to the change event in JavaScript, and simply make it submit the form.

<!-- HTML code --->
<input 
  type="file" 
  onchange="if (confirm('Upload ' + this.value + '?')) this.form.submit();"
>

Asking the users for confirmation is recommendable, so they stay in control of the process and can cancel if they chose the wrong file by accident.

Tomalak
Definitely give the user an opportunity to abort if they suddenly realize that they clicked on the wrong file.
DOK
+1  A: 

The first answer had the right javascript, but ASP.NET does not necessarily expose the input control directly, so it is better to put the onchange event on the FileUpload control.

<asp:FileUpload ID="myFileUpload" onchange="if (confirm('Upload ' + this.value + '?')) this.form.submit();" runat="server" />

Another route to go is to provide rich uploading via flash/silverlight/ajax. A great component for this can be found at http://www.ajaxuploader.com/ for about $100 or there is a free one at http://www.swfupload.org/ that requires a little more effort to implement.

AJ