views:

566

answers:

3

A friend and I have been discussing what's the best way to send large file over the Internet. FTP, single Web services, Chunking Bytes To multiple Web Services, HTTP File Post (multi-part message), RIA Interface (SilverLight or Flash).

Are there answers/solutions that are missing?

Let me give you more of my specific situation.

I have a .NET 2.0 Windows Form "client" application that interacts by web services with an ASP.NET Application. In the client application I need the ability to upload a large file and communicate the status of the upload to the user. I was doing a single web service, but found the file size to be problematic over the Internet, so created multiple web services to chunk the byte array. Now, wanting to consider other options.

Some research done...

SilverLight File Upload www.codeplex.com/SilverlightFileUpld

ASP.NET File Upload www.brettle.com/neatupload

FTP in .NET Framework www.windowsdevcenter.com/pub/a/windows/2006/12/12/building-ftp-services-using-net-20.html

Wanting others opinions. Thanks.

+5  A: 

We have this problem and we use a web service solution with three calls, one to start the process, the second to send up chunks of the file and the third to end the process, works like a charm.

Lloyd
A: 

I myself am partial to the Flash/Silverlight option (usually Silverlight as it integrates wonderfully with .NET.) Both options provide a stable, quick mechanism to upload files that doesn't hang up the page your working on, allowing the user to perform other tasks while the upload is taking place (assuming those tasks don't take them to another page).

A really GREAT example of a Flash-based upload service that allows multiple files to be uploaded concurrently is in DeviantArt.com's upload deviation page. You are able to select a file to upload, which is then submitted in the background by whatever works for your browser (in some cases, I think a hidden iframe is created which submits the file request if Flash is not available), and you get a file icon with an async progress indicator for each file currently being uploaded.

One of the added benefits of Flash/Silverlight are that you can interact with the file on the client side before submitting it, allowing you to do things like verify the data is not malware, script, etc. This can be very difficult or impossible with classic file upload and javascript due to permissions restrictions that are usually present in web browsers these days (for good reason.)

For your application, I would say Silverlight would be the best option to interact with your web services (I assume classic ASMX services, but if they are WCF, Silverlight also has excellent support for WCF too.)

jrista
A: 

There are many great flash upload scripts, and they have impressive features.

The one I like best is Solmetra Flash Uploader, the online demo looks impressive, and you could also set it to zero width and height and script it in Javascript.

Another option would be SWFUpload, it's less flashy but could get the job done better depending on your needs. It also has an online demo.

Even Gmail uses flash to upload attachments.

Osama ALASSIRY