Uses localStorage and the File API to cache files locally before upload, can reload page and still upload selected files