React-fileupload-progress
React component of Input file and progress bar. This component watch xhr uploading process, and trigger some events.
Installation
npm install --save react-fileupload-progress
API
FileUploadProgress
Props
url
: File upload endpoint url.React.PropTypes.string.isRequired
method
: Http request method.React.PropTypes.string.isRequired
Events
These handler will called on XMLHttpRequest's progress events. See also Using XMLHttpRequest on MDN.
-
onProgress
: Called whenxhr
was loaded. Third parameter is the progress of uploading process(0 ~ 100).React.PropTypes.func(e, request, progress)
-
onLoad
: Called whenxhr
was loaded.React.PropTypes.func(e, request)
-
onError
: Called whenxhr
become error.React.PropTypes.func(e, request)
-
onAbort
: Called whenxhr
was aborted.React.PropTypes.func(e, request)
Customization
It is possible to customize view and form.
-
formRenderer
: For custom form rendering, Typo is fixed(#4) from v0.2.0onSubmitHandler
should be attach on your custom form's submit event. WhenonSubmitHandler
is called, this component start observexhr
.React.PropTypes.func(onSubmitHandler)
-
formGetter
: If customformRenderer
is used, you need to implement this method and must returnFormData
object.React.PropTypes.func => {return form}
-
progressRenderer
: For custom progress rendering, First parameter is the progress of uploading process(0 ~ 100). Ifxhr
has error, second parameter will betrue
. When third parameter is called, currentxhr
will be aborted.React.PropTypes.func(progress, hasError, cancelHandler)
-
formCustomizer
: Called beforexhr
send. You can add any custom form parameter(e.g: id, name, etc) with this method. Must returnform
given as argument.React.PropTypes.func(form) => {return form}
-
beforeSend
: Called beforexhr
send. You can customizexhr
(e.g: HTTPHeader, etc) with this method. Must returnrequest
given as argument.React.PropTypes.func(request) => {return request}
Usage example
'use strict';
import React from 'react';
import FileUploadProgress from 'react-fileupload-progress';
class App extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div>
<h3>Default style</h3>
<FileUploadProgress key='ex1' url='http://localhost:3000/api/upload'
onProgress={(e, request, progress) => {console.log('progress', e, request, progress);}}
onLoad={ (e, request) => {console.log('load', e, request);}}
onError={ (e, request) => {console.log('error', e, request);}}
onAbort={ (e, request) => {console.log('abort', e, request);}}
/>
</div>
)
}
};
React.render(<App/>, document.getElementById('out'));
See also example
npm install # or yarn
npm run start:example
Build
npm run build
Tests
npm test