i've been approached to create a bespoke ftp app that users will download in order to be able to upload video files ( up to 100mb).
- they want it to be idiot proof ( ie easy for non-computer literate people ). I'm assuming that setting up an ftp app like FileZilla with their username and password would be too much of a stretch for most users.
- cross platform ( ouch )
Surely i'm not the first person that has approached the problem of how to enable users to upload huge files. Wondering if anyone can give me any tips.
thanks guys, must say this was the most comprehensive response i've ever had in a forum.
Think i'll suggest 2 routes like bobince mentioned
1) http using SWFUpload (bh213), i've used it before. It's pretty easy to setup and has a good user experience
2) then offer an ftp option. Either using a browser or something like filezilla.
If user have to upload large file, look to have a kind of resume functionality.
Is FTP the only option? If you can implement something base on P2P (bittorrent) you could get resume and integrity functionality for large files.
Here's 2 like I got from googling bittorent library
http://sourceforge.net/projects/libbt/
http://www.codeproject.com/KB/cpp/FTKernelAPI.aspx
Uploading 100mb files is no more complex than 1kb files. You must simply insure that the reciever (in this case the server) doesn't try to receive the entire file into memory. The server could write the data immediately to disk or into a db CLOB. The server reads from the input stream and writes to the output stream, with very little resources required.
You might want to think about single-sign-on strategies if you don't want users to have to provide username and password.
While not FTP, you could try using swfupload to upload files through HTTP. We are using it for approx. 100mb file uploads on IIS and it works reasonably well.
Note that you have to set the maximum request size in web.config to 100 or more MB...
How about building a simple Adobe Air app with JS and HTML I believe it now has a FTP socket capability. You could also use the build in DB to store the details of whats sent where, small footprint, cross platform and you can build it in what you feel best in (flash, flex, JS/HTML).
I have similar requirements and I am looking at using Adobe air and jQuery or Ext for the solution.