itsa-react-fileuploadbutton
React-component: file-uploader, but exposed as a simple button without input-area and with extended features
It has the following features:
- Abortable
- CORS support
- IE8+ support
- Progress-status (IE10+)
- Ultrafast upload by splitting the file(s) in chunks
- Focussable
- Aria-support (automaticly)
Different modes
The uploadbutton uses XHR2 by default and falls back into using a form-submit mode (multipart/form-data
).
You can force the form-submit
mode, by setting the prop formSubmitMode
true
. This is NOT recomended:
Advantages formSubmitMode
:
- Easy setup serverside (no file-chunks)
Disadvantages formSubmitMode
:
- No file-chunks, therefore no highspeed upload
- No onProgress
- When CORS, the uploader is unable to detect reponse-errors, leading into the callback of onSuccess in case of a network-error.
Best usage is same-origin
with formSubmitMode
=false (which is the default).
How to use:
About the css
You need the right css in order to make use of itsa-react-fileuploadbutton
. There are 2 options:
- You can use the css-files inside the
css
-folder, AND use the css-files ofitsa-react-button
/css - You can use:
Component = require("itsa-react-fileuploadbutton/lib/component-styled.jsx");
and build your project withwebpack
. This is needed, because you need the right plugin to handle a requirement of thescss
-file.
Setting up the server
You need to set up the server right by using these modules. Therefore, you can use the module: itsa-fileuploadhandler
Example hapi-server:
IE<10
IE8 and IE8 don't support multiple file-uploads. Thus, when using multipleFiles: true
, these browsers can only select one file at a time.
These browsers don't support a progess-status either: the this.props.onProgress
won't be invoked on these browsers.
Special Note: X-Frame-Origin
If your app uses the http-header X-Frame-Origin
(which it should!) then you need to test if file-uploading succeeds
with the property formSubmitMode :true
.
Reason for this is, that older browsers (<IE10) are using this mode for uploading files. The X-Frame-Origin
rules might prevent
this module from working right when you're uploading CORS: you may need to set these headers to accept a specific cross-domain you're uploading to.