Unless your web service processes the file after it’s uploaded and gives the uploader instant and useful feedback on whether that file is valid or not [like companies such as PsPrint do, or like most “Web 2.0” services do], please, for the love of all that is nice and easy, allow your customers to upload files via FTP. It’s simple, it allows the uploader to use whatever tool they’re familiar with, and it allows the user to verify that the file uploaded properly.
Furthermore, it’s not at the mercy of whatever post-processing script you use to deal with the file afterwards: if that script munges the uploader’s file in some way, the file is already uploaded and since your script does its work on a copy of that file [right? right?!] when the script gracefully [right? right?!] fails and alerts one of your staffers that there’s an issue, the uploader doesn’t have to care because he’s already off doing some other piece of work [or perhaps even sleeping!] knowing full well that the service will take good care of his files, instead of sitting by the web browser trying to figure out if the badly-documented error is his fault [“Maybe the filename shouldn’t have underscores?”, he asks] or the fault of the service provider [“Perhaps their hard drive is full!”]
Transcontinental, one of the largest printers in North America, simply allows users to upload their files by FTP, and if they need to send you a file back that’s too large for email, they just put it on the FTP site for you to download. Simple, readily accessible, no bullshit–now that’s professional.