Vue 2 需改用 vue-filepond@^6.0.0;图片预览、类型校验等插件要单独安装并手动传入组件;SSR 场景(如 Nuxt)需用 包裹
把 FilePond 文件上传库封装成 Vue 组件,省去手动集成上传交互的麻烦
Vue 版 FilePond 适配组件,帮你快速在 Vue 项目里接入文件上传功能,支持图片预览、拖拽和异步上传。
核心能力
- 封装成 Vue 组件,通过 props 配置上传行为
- 支持拖放、粘贴、目录、远程 URL 和 Data URI 添加文件
- 可用 AJAX 异步上传,也可编码为 base64 随表单提交
- 内置图片优化、缩放、裁剪并修正 EXIF 方向
- 键盘可操作,兼容 VoiceOver、JAWS 等辅助技术
容易踩的坑
- 5.1.3最新正式版2019-08-05 · 2019-08-05 08:58 UTC
- Fix problem where FilePond detach would not run correctly causing memory leaks
- 5.1.22019-07-19 · 2019-07-19 06:15 UTC
查看更新说明
- Fix issue with 'input' event.
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Vue FilePond
Vue FilePond is a handy adapter 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.
If you want to use Vue FilePond with Vue 2, please use v6 of this plugin.
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.
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.
Installation:
If you're using Vue 2 please run npm install vue-filepond@^6.0.0
npm install vue-filepond filepond
Usage:
<template>
<div id="app">
<file-pond
name="test"
ref="pond"
label-idle="Drop files here..."
v-bind:allow-multiple="true"
accepted-file-types="image/jpeg, image/png"
server="/api"
v-bind:files="myFiles"
v-on:init="handleFilePondInit"
/>
</div>
</template>
<script>
// Import Vue FilePond
import vueFilePond from "vue-filepond";
// Import FilePond styles
import "filepond/dist/filepond.min.css";
// Import FilePond plugins
// Please note that you need to install these plugins separately
// Import image preview plugin styles
import "filepond-plugin-image-preview/dist/filepond-plugin-image-preview.min.css";
// Import image preview and file type validation plugins
import FilePondPluginFileValidateType from "filepond-plugin-file-validate-type";
import FilePondPluginImagePreview from "filepond-plugin-image-preview";
// Create component
const FilePond = vueFilePond(
FilePondPluginFileValidateType,
FilePondPluginImagePreview
);
export default {
name: "app",
data: function () {
return { myFiles: ["cat.jpeg"] };
},
methods: {
handleFilePondInit: function () {
console.log("FilePond has initialized");
// FilePond instance methods are available on `this.$refs.pond`
},
},
components: {
FilePond,
},
};
</script>
When using FilePond with an SSR configuration like Nuxt.js it's best to wrap it in <no-ssr> tags.
<template>
<no-ssr>
<file-pond />
</no-ssr>
</template>
Usage in the browser:
<!DOCTYPE html>
<html>
<head>
<title>Vue in Browser</title>
<link
rel="stylesheet"
href="https://unpkg.com/filepond/dist/filepond.min.css"
/>
<link
rel="stylesheet"
href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.min.css"
/>
</head>
<body>
<div id="app">
<file-pond></file-pond>
</div>
<script src="https://unpkg.com/filepond-plugin-image-preview"></script>
<script src="https://unpkg.com/filepond"></script>
<script src="https://unpkg.com/vue"></script>
<script src="https://unpkg.com/vue-filepond@6"></script>
<script>
new Vue({
el: "#app",
components: {
FilePond: vueFilePond.default(FilePondPluginImagePreview),
},
});
</script>
</body>
</html>