Email servers restrict how big your file attachments can be. I frequently ask my clients to send me trace files and diagnostic logs that are hundreds of megabytes (even compressed), and doing this over email just doesn’t work. In the old days, we set up FTP servers to move files around, but FTP uploads aren’t intuitive for most users.
Web services like Filedropper.com and drop.io sprouted up to help alleviate this pain. Users just go to those sites, upload the file, and they get a URL they can share with anyone to download the file. They’re easy and useful, but they reserve the best features – like big file sizes or privacy – to paying users.
Now you can host your own file-upload service on your web server and use Amazon S3 for the cloud back end. The whole thing is pretty simple:
Step 1 – get an Amazon S3 account. I’ve long been a fan of Amazon’s Simple Storage Service (S3), a cheap cloud file server. Bandwidth is free until November 1st, 2010, after which it’s just $.15 per GB, and storage costs are $.15 per GB.
Step 2 – download the HTML files – Ricky Matata did the hard work of building a form with a Flash-based file upload component and hooking it up to Amazon S3.
Step 3 – edit the parameters in the files – there’s a few parameters for things like the maximum file size you’ll allow, the number of files you’ll allow, and your Amazon S3 credentials. If you wanna get fancy, you can also edit the form itself – I simplified mine so that it only shows a file upload and nothing else.
Step 4 – upload the files to your web site & S3 – and presto, you’re done. You can point your clients to the web page whenever they need to send you files. As users upload files, they’ll be available in your Amazon S3 account – you can download them via the web. Depending on how you set up your privacy on your S3 folders (aka buckets), the public can also download those files – handy if you want to share files with multiple people.
Good coders might add things like email alerts so that they get an email whenever someone uploads a file for them, or perhaps automatic deletion of the uploaded files after X days. I’m not a good coder, and I’m quite happy with this setup. I just tell the clients to let me know after they’ve sent me the files I needed.