| 776 |
lars |
1 |
<img alt="Dropzone.js" src="http://www.dropzonejs.com/images/new-logo.svg" />
|
|
|
2 |
|
|
|
3 |
[ ](https://codeship.com/projects/55087)
|
|
|
4 |
|
|
|
5 |
Dropzone.js is a light weight JavaScript library that turns an HTML element into a dropzone.
|
|
|
6 |
This means that a user can drag and drop a file onto it, and the file gets uploaded to the server via AJAX.
|
|
|
7 |
|
|
|
8 |
* * *
|
|
|
9 |
|
|
|
10 |
_If you want support, please use [stackoverflow](http://stackoverflow.com/) with the `dropzone.js` tag and not the
|
|
|
11 |
GitHub issues tracker. Only post an issue here if you think you discovered a bug or have a feature request._
|
|
|
12 |
|
|
|
13 |
* * *
|
|
|
14 |
|
|
|
15 |
**Please read the [contributing guidelines](CONTRIBUTING.md) before you start working on Dropzone!**
|
|
|
16 |
|
|
|
17 |
<br>
|
|
|
18 |
<div align="center">
|
|
|
19 |
<a href="https://github.com/enyo/dropzone/releases/latest"><strong>>> Download <<</strong></a>
|
|
|
20 |
</div>
|
|
|
21 |
<br>
|
|
|
22 |
<br>
|
|
|
23 |
|
|
|
24 |
|
|
|
25 |
Starting with version 2.0.0 this library does no longer depend on jQuery (but
|
|
|
26 |
it still works as a jQuery module).
|
|
|
27 |
|
|
|
28 |
Dropzone is compatible with [component](https://github.com/component/component),
|
|
|
29 |
there's a standalone version and an [AMD](https://github.com/amdjs/amdjs-api/wiki/AMD)
|
|
|
30 |
module that's compatible with [RequireJS](http://requirejs.org) in the downloads
|
|
|
31 |
folder.
|
|
|
32 |
|
|
|
33 |
<img slt="Dropzone Screenshot" width="585" src="http://i.imgur.com/Xf7QvVG.png" />
|
|
|
34 |
|
|
|
35 |
|
|
|
36 |
|
|
|
37 |
## Main features
|
|
|
38 |
|
|
|
39 |
- Image thumbnail previews. Simply register the callback `thumbnail(file, data)` and display the image wherever you like
|
|
|
40 |
- Retina enabled
|
|
|
41 |
- Multiple files and synchronous uploads
|
|
|
42 |
- Progress updates
|
|
|
43 |
- Support for large files
|
|
|
44 |
- Complete theming. The look and feel of Dropzone is just the default theme. You
|
|
|
45 |
can define everything yourself by overwriting the default event listeners.
|
|
|
46 |
- Well tested
|
|
|
47 |
|
|
|
48 |
## Documentation
|
|
|
49 |
|
|
|
50 |
For the full documentation and installation please visit www.dropzonejs.com
|
|
|
51 |
|
|
|
52 |
Please also refer to the [FAQ](https://github.com/enyo/dropzone/wiki/FAQ).
|
|
|
53 |
|
|
|
54 |
## Examples
|
|
|
55 |
|
|
|
56 |
For examples, please see the [GitHub wiki](https://github.com/enyo/dropzone/wiki).
|
|
|
57 |
|
|
|
58 |
## Usage
|
|
|
59 |
|
|
|
60 |
Implicit creation:
|
|
|
61 |
|
|
|
62 |
```html
|
|
|
63 |
<form id="my-awesome-dropzone" action="/target" class="dropzone"></form>
|
|
|
64 |
```
|
|
|
65 |
|
|
|
66 |
That's it. Really!
|
|
|
67 |
|
|
|
68 |
Dropzone will automatically attach to it, and handle file drops.
|
|
|
69 |
|
|
|
70 |
Want more control? You can configure dropzones like this:
|
|
|
71 |
|
|
|
72 |
```js
|
|
|
73 |
// "myAwesomeDropzone" is the camelized version of the ID of your HTML element
|
|
|
74 |
Dropzone.options.myAwesomeDropzone = { maxFilesize: 1 };
|
|
|
75 |
```
|
|
|
76 |
|
|
|
77 |
...or instantiate dropzone manually like this:
|
|
|
78 |
|
|
|
79 |
```js
|
|
|
80 |
new Dropzone("div#my-dropzone", { /* options */ });
|
|
|
81 |
```
|
|
|
82 |
|
|
|
83 |
> Note that dropzones don't have to be forms. But if you choose another element you have to pass the `url` parameter in the options.
|
|
|
84 |
|
|
|
85 |
For configuration options please look at the [documentation on the website](http://www.dropzonejs.com/#configuration)
|
|
|
86 |
or at the [source](https://github.com/enyo/dropzone/blob/master/src/dropzone.coffee#L90).
|
|
|
87 |
|
|
|
88 |
|
|
|
89 |
|
|
|
90 |
### Register for events
|
|
|
91 |
|
|
|
92 |
If you want to register to some event you can do so on the `dropzone` object itself:
|
|
|
93 |
|
|
|
94 |
```js
|
|
|
95 |
Dropzone.options.myDropzone({
|
|
|
96 |
init: function() {
|
|
|
97 |
this.on("error", function(file, message) { alert(message); });
|
|
|
98 |
}
|
|
|
99 |
});
|
|
|
100 |
// or if you need to access a Dropzone somewhere else:
|
|
|
101 |
var myDropzone = Dropzone.forElement("div#my-dropzone");
|
|
|
102 |
myDropzone.on("error", function(file, message) { alert(message); });
|
|
|
103 |
```
|
|
|
104 |
|
|
|
105 |
For a list of all events, please look at the chapter
|
|
|
106 |
[»listen to events«](http://www.dropzonejs.com/#listen_to_events) in the documentation
|
|
|
107 |
or at the [source](src/dropzone.coffee#L43).
|
|
|
108 |
|
|
|
109 |
|
|
|
110 |
## Browser support
|
|
|
111 |
|
|
|
112 |
- Chrome 7+
|
|
|
113 |
- Firefox 4+
|
|
|
114 |
- IE 10+
|
|
|
115 |
- Opera 12+ (Version 12 for MacOS is disabled because their API is buggy)
|
|
|
116 |
- Safari 6+
|
|
|
117 |
|
|
|
118 |
For all the other browsers, dropzone provides an oldschool file input fallback.
|
|
|
119 |
|
|
|
120 |
## Why another library?
|
|
|
121 |
|
|
|
122 |
I realize that there [are](http://valums.com/ajax-upload/) [already](http://tutorialzine.com/2011/09/html5-file-upload-jquery-php/) [other](http://code.google.com/p/html5uploader/) [libraries](http://blueimp.github.com/jQuery-File-Upload/) out there but the reason I decided to write my own are the following:
|
|
|
123 |
|
|
|
124 |
- I didn't want it to be too big, and to cumbersome to dive into.
|
|
|
125 |
- I want to design my own elements. I only want to register callbacks so I can update my elements accordingly.
|
|
|
126 |
- Big files should get uploaded without a problem.
|
|
|
127 |
- I wanted a callback for image previews, that don't kill the browser if too many too big images are viewed.
|
|
|
128 |
- I want to use the latest API of browsers. I don't care if it falls back to the normal upload form if the browser is too old.
|
|
|
129 |
- I don't think that it's necessary anymore to depend on libraries such as jQuery (especially when providing functionality that isn't available in old browsers anyway).
|
|
|
130 |
|
|
|
131 |
MIT License
|
|
|
132 |
-----------
|
|
|
133 |
|
|
|
134 |
See LICENSE file
|