Friday, March 11, 2011

File upload webapp

I recently became frustrated with the lack of easily self-hosted file upload app options. I needed to replace my employer's reliance on giant email attachments with something that wouldn't melt our mail server - and our clients could still understand how to use. This unfortunately ruled out the classic options like anonymous FTP.

In the end I wrote a new web application to accept files from clients over http and save them to a shared folder on the internal network. Many of the building blocks like uploadify were available, but there wasn't much around in terms of complete applications to do the job. Instead, people seemed to be using services like YouSendIt, Box.net, DropSend, etc ... which have downsides including:

  • Inability to provide a canned recipient list, or high per-user per-month fees to support one
  • Inability to customise the site's appearance and integrate it into your domain - without paying high fees for an "enterprise" version
  • The need to download files once the client has sent them to the provider, often one-by-one via a clumsy web interface
  • Windows-only client applications required to do batch downloads of files. Some services have Mac versions, but only one had a Linux client suitable for our advertising thin clients.
  • Lack of a web services API - unless you pay high fees for the "enterprise" version.
  • Lack of no-flash fallback upload methods
  • Sometimes iffy browser compatibility

I wanted something really simple for clients - and staff - to use, that simply dropped files into a shared folder as they were uploaded and sent a notification email to staff when the upload was finished. Now that I've finished it, I'm releasing the result as open source software for the use of anybody who wants it. You can get it here:

https://github.com/ringerc/postupload

It's a Java EE 6 project that runs on Glassfish. Don't stress if you've never used any of that before, if you only know PHP, etc. The client-side is all familiar HTML and JavaScript, and the server side isn't especially complicated code. Detailed instructions for installing and running Glassfish are provided.

4 comments:

  1. can u send me your email address. I need to ask you a question about kobo

    ReplyDelete
  2. Ask right here, so Google can find it in case other people have the same question later.

    ReplyDelete
  3. Looks promising. Any chance of a public-facing demo, to see if it suits my needs?

    ReplyDelete
    Replies
    1. Nope, I have no interest in hosting a demo.

      In any case, since writing this I've learned much saner ways to handle multi-uploads in Java EE, ones that weren't available when I wrote this. I'd start with RichFaces 4 FileUpload.

      Frankly, JSF2 was a horrible choice for this project, it should've been done in pure JAX-RS without involving JSF2.

      Now better choices exist, such as the RichFaces 4 FileUpload component for JSF2. That eliminates the need for JAX-RS, removing 90% of the horrible hacks in the code I produced.

      Delete