A React file preview component with built-in support for image editing, image carousel/slider, and download functionality, making it easy to display and manage files in your application
npm install react-files-previewreact-photo-editor (brightness, contrast, rotate, flip, draw, etc.).
files as a prop for controlled behavior.
onChange, onRemove, onError, onClick, and onDrop.
bash
Using npm
npm install react-files-preview
Using yarn
yarn add react-files-preview
`
🚀 Basic Usage
`jsx
import React, { useState } from "react";
import { ReactFilesPreview } from "./components/ReactFilesPreview";
function App() {
const [files, setFiles] = useState([]);
const handleFileChange = (event: React.ChangeEvent) => {
const newFiles = Array.from(event.target.files || []);
setFiles((prevFiles) => [...prevFiles, ...newFiles]);
console.log("Selected files:", newFiles);
console.log("All files:", [...files, ...newFiles]);
};
const handleFileRemove = (removedFile: File) => {
setFiles((prevFiles) => prevFiles.filter((file) => file !== removedFile));
console.log("Removed file:", removedFile);
};
return (
files={files}
onChange={handleFileChange}
onRemove={handleFileRemove}
allowEditing
multiple
/>
);
}
export default App;
`
📱 Live Demo
See it in action on Stackblitz
Props
| Name | Type | Default | Description |
| --------------------- | ------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| files | File[] | [] | Pass array of file objects for default files |
| url | string | null | Set image by passing image URL |
| downloadFile | boolean | true | Enables file download |
| removeFile | boolean | true | Show file remove icon on file hover |
| showFileSize | boolean | true | Show file size under files |
| showSliderCount | boolean | true | Show slides count under file slider |
| disabled | boolean | false | If true, prevents user to add files by disabling the component |
| multiple | boolean | true | Accepts one or more files |
| accept | string | | Comma-separated lists of file types. See MIME Types |
| maxFileSize | number | | Maximum allowed file size in bytes _e.g. 1024 x 1024 x 5 == 5MB_ |
| maxFiles | number | | Maximum files allowed to be added |
| width | string | rfp-basis-11/12 | Tailwind CSS flex-basis class https://tailwindcss.com/docs/flex-basis |
| height | string | | Tailwind CSS height class https://tailwindcss.com/docs/height |
| fileWidth | string | rfp-w-44 | Tailwind CSS width class https://tailwindcss.com/docs/width |
| fileHeight | string | rfp-h-32 | Tailwind CSS height class https://tailwindcss.com/docs/height |
| getFile | func | | Returns all current files |
| onChange | func | | Returns selected file(s) |
| onRemove | func | | Returns the removed file |
| onError | func | | Returns error message as string |
| onClick | func | | Returns file on click |
🤝 Contributing
Contributions to react-files-preview are welcome! If you have any issues, feature requests, or improvements, please open an issue or submit a pull request on the GitHub repository.
$3
1. Fork the repository
2. Create your feature branch: git checkout -b feature/amazing-feature
3. Commit your changes: git commit -m 'Add some amazing feature'
4. Push to the branch: git push origin feature/amazing-feature`