uppie.js
function arrayApi(input, opts, cb) {
    var fd = new FormData(), files = [];
    [].slice.call(input.files).forEach(function(file) {
      fd.append(opts.name, file, file.webkitRelativePath || file.name);
      files.push(file.webkitRelativePath || file.name);
    });
    cb(fd, files);
  }
function arrayApi(input, opts, cb) {
    var fd = new FormData(), files = [];
    [].slice.call(input.files).forEach(function(file) {
      fd.append(opts.name, file, file.webkitRelativePath || file.name);
      files.push(file.webkitRelativePath || file.name);
    });
    cb(fd, files);
  }
function arrayApi ( input , opts , cb ) { var fd = new FormData ( ) , files = [ ] ; [ ] . slice . call ( input . files ) . forEach ( function ( file ) { fd . append ( opts . name , file , file . webkitRelativePath || file . name ) ; files . push ( file . webkitRelativePath || file . name ) ; } ) ; cb ( fd , files ) ; }
old prefixed API implemented in Chrome 11+ as well as array fallback
old prefixed API implemented in Chrome 11 + as well as array fallback