This is a React wrapper around the FilePond library, which helps you create elegant, flexible, customizable, drag-and-drop file input in React applications.
Installation:
# NPM $ npm i react-filepond filepond
How to use it:
1. Use hooks.
import React, { useState } from 'react' import ReactDOM from 'react-dom' // Import React FilePond import { FilePond, File, registerPlugin } from 'react-filepond' // Import FilePond styles import 'filepond/dist/filepond.min.css' // Import the Image EXIF Orientation and Image Preview plugins // Note: These need to be installed separately // `npm i filepond-plugin-image-preview filepond-plugin-image-exif-orientation --save` import FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation' import FilePondPluginImagePreview from 'filepond-plugin-image-preview' import 'filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css' // Register the plugins registerPlugin(FilePondPluginImageExifOrientation, FilePondPluginImagePreview) // Our app function App() { const [files, setFiles] = useState([]) return ( <div className="App"> <FilePond files={files} onupdatefiles={setFiles} allowMultiple={true} maxFiles={3} server="/api" name="files" {/* sets the file input name, it's filepond by default */} labelIdle='Drag & Drop your files or <span class="filepond--label-action">Browse</span>' /> </div> ) }
2. Use as a component.
import React, { useState } from 'react' import ReactDOM from 'react-dom' // Import React FilePond import { FilePond, registerPlugin } from "react-filepond"; // Import FilePond styles import "filepond/dist/filepond.min.css"; // Import the Image EXIF Orientation and Image Preview plugins // Note: These need to be installed separately import FilePondPluginImageExifOrientation from "filepond-plugin-image-exif-orientation"; import FilePondPluginImagePreview from "filepond-plugin-image-preview"; import "filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css"; // Register the plugins registerPlugin(FilePondPluginImageExifOrientation, FilePondPluginImagePreview); // Our app class App extends Component { constructor(props) { super(props); this.state = { // Set initial files, type 'local' means this is a file // that has already been uploaded to the server (see docs) files: [ { source: "index.html", options: { type: "local" } } ] }; } handleInit() { console.log("FilePond instance has initialised", this.pond); } render() { return ( <div className="App"> <FilePond ref={ref => (this.pond = ref)} files={this.state.files} allowMultiple={true} allowReorder={true} maxFiles={3} server="/api" name="files" {/* sets the file input name, it's filepond by default */} oninit={() => this.handleInit()} onupdatefiles={fileItems => { // Set currently active file objects to this.state this.setState({ files: fileItems.map(fileItem => fileItem.file) }); }} /> </div> ); } }
Preview:
Download Details:
Author: pqina
Live Demo: View The Demo
Download Link: Download The Source Code
Official Website: https://github.com/pqina/react-filepond
License: MIT