vue-file-upload
![npm download](https://img.shields.io/npm/dm/vue-file-upload.svg?style=flat-square)
vue1.x版本 可安装vue-file-upload@0.0.7版本
vue2.x版本 可安装当前最新版本
vue.js ,vue-loader 上传文件,vue-file-upload
代码里面包含demo,运行:
npm run dev
install
npm
npm install --save vue-file-upload
CommonJS
var VueFileUpload = require('vue-file-upload');
属性(Props)
url:{
type:String,
required:true
},
max:{
type:Number,
default:Number.MAX_VALUE
},
label:{
type:String,
default:'选择文件'
},
name:{
type:String,
default:'file'
},
icon:{
type:String,
default:null
},
autoUpload:{
type:Boolean,
default:false
},
multiple:{
type:Boolean,
default:false
},
onAdd:{
type:Function,
default:noop
},
filters:{
type:Array,
default:()=>{
return new Array();
}
},
requestOptions:{
type:Object,
default:()=>{
return{
formData:{},
headers:{},
responseType:'json',
withCredentials:false
}
}
},
events:{
type:Object,
default:()=>{
return {
onProgressUpload:noop(file,progress:number),
onCompleteUpload:noop(file,response,status,headers),
onErrorUpload:noop(file,response,status,headers),
onSuccessUpload:noop(file,response,status,headers),
onAbortUpload:noop(file,response,status,headers),
onAddFileFail:noop(file,failFilter:array),
onAddFileSuccess:noop(file)
}
}
}
文件属性说明(file)
const file = {
name:"文件名称",
size:123,
type:"image/jpeg",
isReady: false,
isUploading:false,
isUploaded:false,
isSuccess:false,
isCancel:false,
isError:false,
progress:0,
}
file.upload();
file.cancel();
file.remove();
方法(methods)
this.$refs.vueFileUploader.uploadAll()
this.$refs.vueFileUploader.clearAll()
ES6
app.vue
<template lang="jade">
vue-file-upload(url='upload.do',
ref="vueFileUploader",
v-bind:filters = "filters",
v-bind:events = 'cbEvents',
v-bind:request-options = "reqopts",
v-on:onAdd = "onAddItem")
table
thead
tr
th name
th size
th progress
th status
th action
tbody
tr(v-for='file in files')
td(v-text='file.name')
td(v-text='file.size')
td(v-text='file.progress')
td(v-text='onStatus(file)')
td
button(type='button',@click="uploadItem(file)") 上传
button(type='button',@click="uploadAll") 上传所有文件
button(type='button',@click="clearAll") 清空文件列表
</template>
<script>
import VueFileUpload from 'vue-file-upload';
export default{
data(){
return{
files:[],
filters:[
{
name:"imageFilter",
fn(file){
var type = '|' + file.type.slice(file.type.lastIndexOf('/') + 1) + '|';
return '|jpg|png|jpeg|bmp|gif|'.indexOf(type) !== -1;
}
}
],
cbEvents:{
onCompleteUpload:(file,response,status,header)=>{
console.log(file);
console.log("finish upload;")
}
},
reqopts:{
formData:{
tokens:'tttttttttttttt'
},
responseType:'json',
withCredentials:false
}
}
},
methods:{
onStatus(file){
if(file.isSuccess){
return "上传成功";
}else if(file.isError){
return "上传失败";
}else if(file.isUploading){
return "正在上传";
}else{
return "待上传";
}
},
onAddItem(files){
console.log(files);
this.files = files;
},
uploadItem(file){
file.upload();
},
uploadAll(){
this.$refs.vueFileUploader.uploadAll();
},
clearAll(){
this.$refs.vueFileUploader.clearAll();
}
},
components:{
VueFileUpload
}
}
</script>