Requirements
- Vue: ^1.0.0 or ^2.0.0
- 支持图片上传,图片拖拽,自定义图片上传
Install
From npm:
$ npm install vue-upload-drag -D
Usage
import VueUploadDrag from 'vue-upload-drag'
Vue.use(VueUploadDrag)
<template>
<upload-drag v-model="fileList" :config="config"/>
</template>
API
{onChange} Function
{onProgress} Function
{onError} Function
{onSuccess} Function 必须接受,并回调exChangeUrl方法
slot
具名插槽:loading,用于自定义loading,结合config.loading用
具名插槽:imgBtns,用于自定义imgBtns,结合config.imgBtns用
具名插槽:liItem,该插槽是在li元素根节点
Arguments:
export default {
name: 'uploadDrag',
props: {
value: {
required: true,
type: Array
},
config: {
required: false,
type: Object,
default: _ => ({
accept: "image/*",
action: "https://jsonplaceholder.typicode.com/posts/",
data: {},
limit: 9,
multiple: true,
imgUrl: "url",
deleteBtnName: "删除",
viewBtnName: "查看",
dragabled: true,
imgBtns: ["删除", "查看"],
loading: true,
isHttpRequest: false,
uploadField: "file",
})
}
}
}
Example
<template>
<upload-drag v-model="fileList" :config="config" @onChange="onChange" @onProgress="onProgress" @picsExceed="picsExceed" @onError="onError" @onSuccess="onSuccess"/>
</template>
import VueUploadDrag from 'vue-upload-drag'
Vue.use(VueUploadDrag)
export default {
data() {
return {
fileList: [
{
name: "food.jpg",
url: "https://www.baidu.com/img/bd_logo1.png",
id: 11
}
],
config: {
limit: 1
}
};
},
methods: {
onChange (f) {
console.log(f)
},
onProgress ({ e, file, uid }) {
console.log(e, file, uid)
},
onError ({ err, file, uid }) {
alert('图片上传失败')
console.log(err, file, uid)
},
picsExceed ({uploadBefore, selectCount, files, value}) {
alert('选择的图片数量超过最大数')
uploadBefore(files, value)
},
onSuccess ({res, file, _uid , exChangeUrl, handleRemove}) {
console.log(res, file, _uid , exChangeUrl, handleRemove)
if (res.code === '0') {
const {url} = res.data
exChangeUrl(_uid, url);
} else {
alert('图片上传失败')
handleRemove(_uid)
}
}
}
};