Solved

Update Panel File Upload

Posted on 2007-04-09
6
755 Views
Last Modified: 2008-02-01
Hi,

Has anyone been able to work a fiel upload so that it works inside an Update Panel?  Even setting PostbackTriggers I cannot get this to work.

Andrew
0
Comment
Question by:REA_ANDREW
  • 3
  • 2
6 Comments
 
LVL 12

Expert Comment

by:UnexplainedWays
ID: 18874956
Nope, I tried for a while and could never figure it out.

A popular was is to post the file to a hidden frame.  There are a few Asp.net examples i found when filtering through google.
0
 
LVL 3

Expert Comment

by:ieciep
ID: 18875140
As many people have noticed in their AJAX-enabled pages, file uploads do not work when doing an async postback. To my knowledge there's no way to support this scenario due to the browser's security restrictions. To understand why the upload doesn't work it's important to understand how async postbacks are performed and how that's different from how the browser performs a regular postback.

When the browser performs a regular postback it has the benefit of being actual code with no security restrictions running on the client computer. When you submit a form it creates a web request with all the form fields. When it encounters an <input type="file"> it examines the file the user chose, reads it from disk, and adds it to the web request.

When the AJAX JavaScript code is running in the browser it can do the first part about creating a request with all the form fields. However, when it gets to <input type="file"> fields it doesn't have the necessary security permissions to read those files from disk. Imagine what would happen it it could read those files: You could create a page that when visited will upload the user's c:\passwords.txt to a remote server! And we all know that every user has a file called passwords.txt on their C: drive. I bet just now you renamed it so my evil code couldn't run :)

 
So what's the workaround? Well, quite simply, the workaround is to do anything that doesn't involve a file upload during an async postback. Here are some solutions:

Have a dedicated "Upload" button that does a regular postback instead of an async postback. You can achieve this using several techniques: Have the button be outside all UpdatePanels; have the button be the target of an UpdatePanel's PostBackTrigger; or call ScriptManager.RegisterPostBackControl() on it.
Have a dedicated file upload page that doesn't have any UpdatePanels. Many web sites already do this anyway.
And now you might wonder, "why don't ASP.NET AJAX and the UpdatePanel handle this better?" We did give this a fair bit of thought and we decided that doing nothing was the best solution. One option we had was to throw some error from JavaScript if we detected any filled out <input type="file"> tags. But what if you wanted to do an async postback that had nothing to do with the file upload? Or perhaps only detect file uploads in certain regions of the document? That would involve even more expensive DOM tree walks that are already causing some performance degradation with UpdatePanels.

In conclusion, if you want a secure browser, you're not going to get file upload functionality from UpdatePanels. If you don't want a secure browser, please get your head checked. If you want to do file uploads, just use one of the two solutions I provided.

0
 
LVL 20

Author Comment

by:REA_ANDREW
ID: 18875161
ieciep, just out of interest, have you pasted Eilon Lipton's Blog into here?
0
Optimizing Cloud Backup for Low Bandwidth

With cloud storage prices going down a growing number of SMBs start to use it for backup storage. Unfortunately, business data volume rarely fits the average Internet speed. This article provides an overview of main Internet speed challenges and reveals backup best practices.

 
LVL 3

Expert Comment

by:ieciep
ID: 18875173
yes
0
 
LVL 12

Accepted Solution

by:
UnexplainedWays earned 500 total points
ID: 18875186

http://www.codeproject.com/useritems/AJAXUpload.asp
I tried this one, but there was javascript security issues.

This site has a nice upload, i was going to view the source and find out how they did it:
http://www.sharebig.com/

Luckly, work purchased these controls that included this one so i didn't need to write it. However, it does ajax the upload, it sill posts back right at the end.
http://www.telerik.com/products/aspnet/controls/upload/overview.aspx

Also, Googled the first para:
http://weblogs.asp.net/leftslipper/archive/2007/03/30/why-don-t-file-uploads-work-during-async-postbacks.aspx
0
 
LVL 12

Expert Comment

by:UnexplainedWays
ID: 18875203
Thanks :]

Good luck with it, just remember there are quite a few out there you can purchase.  So weight up the cost of your time to build your own or to purchase.  Cause the one i have is per developer.  So share the cost over the next few clients ;)
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

831 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question