react-filepond

pqinaMIT更新放缓

把 FilePond 文件上传组件封装成 React 组件,支持拖拽上传、图片预览和异步处理,省去自己对接上传逻辑的麻烦。

🔌 A handy FilePond adapter component for React

7.1.0发布于 2020-09-09 11:11 UTC1,988star94fork同步于 2026-11-07 07:33 UTC

怎么上手

由 README 提炼,执行前请确认
npm install react-filepond filepond --save
硬件要求按 README 说明

README 未说明

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

FilePond 的 React 封装组件,帮你快速接入拖拽上传、图片优化和可访问的文件选择界面

把 FilePond 文件上传组件封装成 React 组件,支持拖拽上传、图片预览和异步处理,省去自己对接上传逻辑的麻烦。

核心能力

  • 支持拖拽、粘贴、目录、远程 URL 和 Data URI 添加文件
  • 通过 AJAX 异步上传,或编码为 base64 随表单提交
  • 自动缩放图片、裁剪并修正 EXIF 方向
  • 键盘可导航,兼容 VoiceOver、JAWS 等辅助技术
  • 响应式布局,自动适配可用空间,兼容移动端和桌面端

容易踩的坑

图片预览和 EXIF 方向插件需单独安装 filepond-plugin-image-preview 与 filepond-plugin-image-exif-orientation;必须额外引入 filepond/dist/filepond.min.css 样式,否则界面无样式;server 属性需指向自己的上传接口,示例中的 /api 不能直接使用

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

1 个版本7.1.0
  1. 7.1.0最新正式版2020-09-09 · 2020-09-09 11:11 UTC
    • Add React types, please uninstall @types/react-filepond

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    React FilePond

    React FilePond is a handy wrapper component for FilePond, a JavaScript library that can upload anything you throw at it, optimizes images for faster uploads, and offers a great, accessible, silky smooth user experience.

    License: MIT npm version npm Discord

    Documentation • Discord • Example project


    Buy me a Coffee • Use FilePond with Pintura • Dev updates


    Core Features

    • Accepts directories, files, blobs, local URLs, remote URLs and Data URIs.
    • Drop files, select on filesystem, copy and paste files, or add files using the API.
    • Async uploading with AJAX, or encode files as base64 data and send along form post.
    • Accessible, tested with AT software like VoiceOver and JAWS, navigable by Keyboard.
    • Image optimization, automatic image resizing, cropping, and fixes EXIF orientation.
    • Responsive, automatically scales to available space, is functional on both mobile and desktop devices.

    Learn more about FilePond


    Also need Image Editing?

    Pintura the modern JavaScript Image Editor is what you're looking for. Pintura supports setting crop aspect ratios, resizing, rotating, cropping, and flipping images. Above all, it integrates beautifully with FilePond.

    Learn more about Pintura


    Installation

    npm install react-filepond filepond --save
    

    Hooks:

    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
    // `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>
      )
    }
    

    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>
        );
      }
    }
    
    

    Read the docs for more information

    Live Demo on Code Sandbox