Is there a nice tidy jQuery plugin that allows including a single JS script then using a simple snippet to enable a form? Something like this:
$j('#MyForm').enableDragDropUploads('.upload-area')
With the upload target being the action of the form.
Any solution must not prevent a regular file field from being usable (using traditional browse method).
I only need one file at a time, though of course having the option for multiple isn't a bad thing.
I've found a couple of drag-drop upload examples:
http://www.appelsiini.net/2009/10/drag-and-drop-file-upload-with-google-gears
http://www.appelsiini.net/2009/10/html5-drag-and-drop-multiple-file-upload
But the code there isn't setup as a plugin. It's probably not too difficult to change it, but also no point doing so if someone else has already done that work and is simply evading my Google searches.
I'm ideally looking for a pure HTML5/jQuery solution.
A Google Gears one is acceptable, but a Flash solution is not.
Check out the recently1 released upload handler from the guys that created the TinyMCE editor. It has a jQuery widget and looks like it has a nice set of features and fallbacks.
http://www.plupload.com/
If you are still looking for one, I just released mine: http://github.com/weixiyen/jquery-filedrop
Works for Firefox 3.6 right now. I decided not to do the Chrome hack for now and let Webkit catch up with FileReader() in the next versions of Safari and Chrome.
This plugin is future compatible.
FileReader() is the official standard over something like XHR.getAsBinary() which is deprecated according to mozilla.
It's also the only HTML5 desktop drag+drop plugin out there that I know of which allows you to send extra data along with the file, including data that can be calculated at the time of upload with a callback function.
Have a look at this one: http://aquantum-demo.appspot.com/file-upload
It also handles multiple file upload!
http://blueimp.github.com/jQuery-File-Upload/ = great solution
According to their docs, the following browsers support drag & drop:
Shameless Plug:
Filepicker.io handles uploading for you and returns a url. It supports drag/drop, cross browser. Also, people can upload from Dropbox/Facebook/Gmail which is super handy on a mobile device.
If you're looking for one that doesn't rely on Flash then dropzonejs is a good shout. It supports multiple files and drag and drop.
http://www.dropzonejs.com/