File Upload widget with multiple file selection, drag&drop support, progress bars and preview images for jQuery. Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.
jQuery File Upload Plugin
Demo File Upload
Support requests and general discussions about the File Upload plugin can be posted to the official
If your question is not directly related to the File Upload plugin, you might have a better chance to get a reply by posting to Stack Overflow.
Bugs and Feature requests
Bugs and Feature requests can be reported using the issues tracker.
Please read the issue guidelines before posting.
- Multiple file upload:
Allows to select multiple files at once and upload them simultaneously.
- Drag & Drop support:
Allows to upload files by dragging them from your desktop or filemanager and dropping them on your browser window.
- Upload progress bar:
Shows a progress bar indicating the upload progress for individual files and for all uploads combined.
- Cancelable uploads:
Individual file uploads can be canceled to stop the upload progress.
- Resumable uploads:
Aborted uploads can be resumed with browsers supporting the Blob API.
- Chunked uploads:
Large files can be uploaded in smaller chunks with browsers supporting the Blob API.
- Client-side image resizing:
Images can be automatically resized on client-side with browsers supporting the required JS APIs.
- Preview images:
A preview of image files can be displayed before uploading with browsers supporting the required JS APIs.
- No browser plugins (e.g. Adobe Flash) required:
- Graceful fallback for legacy browsers:
Uploads files via XMLHttpRequests if supported and uses iframes as fallback for legacy browsers.
- HTML file upload form fallback:
Allows progressive enhancement by using a standard HTML file upload form as widget element.
- Cross-site file uploads:
Supports uploading files to a different domain with cross-site XMLHttpRequests or iframe redirects.
- Multiple plugin instances:
Allows to use multiple plugin instances on the same webpage.
- Customizable and extensible:
Provides an API to set individual options and define callBack methods for various upload events.
- Multipart and file contents stream uploads:
Files can be uploaded as standard "multipart/form-data" or file contents stream (HTTP PUT file upload).
- Compatible with any server-side application platform:
Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.
The jQuery Iframe Transport is required for browsers without XHR file upload support.
The User Interface is built with jQuery UI. The demo also includes the jQuery Image Gallery Plugin.
The repository also includes the jQuery XDomainRequest Transport plugin, which enables Cross-domain AJAX requests (GET and POST only) in Microsoft Internet Explorer >= 8. However, the XDomainRequest object doesn't support file uploads and the plugin is only used by the Demo for Cross-domain requests to delete uploaded files from the demo file upload service.
Cross-domain File Uploads using the Iframe Transport plugin require a redirect back to the origin server to retrieve the upload results. The example implementation makes use of result.html as a static redirect page for the origin server.
The File Upload plugin is regularly tested with the latest browser versions and supports the following minimal versions:
- Google Chrome
- Apple Safari 4.0+
- Mozilla Firefox 3.0+
- Opera 11.0+
- Microsoft Internet Explorer 6.0+
The File Upload plugin has been tested with and supports the following mobile browsers:
- Apple Safari on iOS 6.0+
- Google Chrome on iOS 6.0+
- Default Browser on Android 2.3+
- Opera Mobile 12.0+
For a detailed overview of the features supported by each browser version please have a look at the Extended browser support information.
Released under the MIT license.