This is a fork of react-images-upload. We added the maxFiles prop to limit the amount of uploaded images. Simple component for upload and validate (client side) images with preview built with React.js. This package use 'react-flip-move' for animate the file preview images.
npm install --save react-images-upload
import React from "react";
import ImageUploader from "react-images-upload";
class App extends React.Component {
constructor(props) {
super(props);
this.state = { pictures: [] };
this.onDrop = this.onDrop.bind(this);
}
onDrop(pictureFiles, pictureDataURLs) {
this.setState({
pictures: this.state.pictures.concat(pictureFiles)
});
}
render() {
return (
<ImageUploader
withIcon={true}
buttonText="Choose images"
onChange={this.onDrop}
imgExtension={[".jpg", ".gif", ".png", ".gif"]}
maxFileSize={5242880}
/>
);
}
}
import React, { useState } from "react";
import ImageUploader from "react-images-upload";
const App = props => {
const [pictures, setPictures] = useState([]);
const onDrop = picture => {
setPictures([...pictures, picture]);
};
return (
<ImageUploader
{...props}
withIcon={true}
onChange={onDrop}
imgExtension={[".jpg", ".gif", ".png", ".gif"]}
maxFileSize={5242880}
/>
);
};
export default App;
parameter | type | default | description |
---|---|---|---|
className | String | - | Class name for the input. |
onChange | Function | - | On change handler for the input. |
buttonClassName | String | - | Class name for upload button. |
buttonStyles | Object | - | Inline styles for upload button. |
withPreview | Boolean | false | Show preview of selected images. |
defaultImages | Array | ['imgUrl1', 'imgUrl2'] | Pre-populate with default images. |
accept | String | "accept=image/*" | Accept attribute for file input. |
name | String | - | Input name. |
withIcon | Boolean | true | If true, show upload icon on top |
buttonText | String | 'Choose images' | The text that display in the button. |
buttonType | String | 'submit' | The value of the button's "type" attribute. |
withLabel | Boolean | true | Show instruction label |
label | String | 'Max file size: 5mb, accepted: jpg, gif, png | Label text |
labelStyles | Object | - | Inline styles for the label. |
labelClass | string | - | Class name for the label |
imgExtension | Array | ['.jpg', '.gif', '.png', '.gif'] | Supported image extension (will use in the image validation). |
maxFileSize | Number | 5242880 | Max image size. |
fileSizeError | String | " file size is too big" | Label for file size error message. |
maxFiles | Number | 99 | Max number of files to upload. |
fileTypeError | String | " is not supported file extension" | Label for file extension error message. |
errorClass | String | - | Class for error messages |
errorStyle | Object | - | Inline styles for errors |
singleImage | Boolean | false | Upload one single image |
Clone the repo and run npm ci
. Start development server with npm start
.
MIT