1.最近在使用avue的upload组件,代码如下:
html文件
<avue-form :option="fileOption" v-model="ruleForm" :upload-after="uploadAfter"></avue-form>
data(){
return{
fileOption{
labelWidth: 120,
searchBtn: false,
submitBtn: false,
emptyBtn: false,
column: [
{
label: '',
prop: 'fileItem',
type: 'upload',
loadText: '附件上传中,请稍等',
labelWidth:0,
span: 24,
propsHttp: {
res: 'data',
url: 'link',
name: 'name'
},
fileType:'text',
action: '/api/file-attach',
fileSize:100000000, //限定100M
tip: '不能超过200M',
},
]
},
ruleForm: {
fileItem:[]
}
}
},
methods:{
// 上传附件后
uploadAfter(res, done) {
console.log(res)
//其余操作
done()
},
}
使用过程中发现,上传的文件已经在upload列表中,点击可下载或预览,但没有调用action,以至于uploadAfter中无法操作。
经过一系列测试后,最终确定是我限制了文件大小为100M,upload报错了。
2.解决方案:
增加upload-error事件用来接收错误,并删除报错的文件
<avue-form :option="fileOption" v-model="ruleForm" :upload-after="uploadAfter" :upload-error="uploadError"></avue-form>
// 上传错误
uploadError(error, column) {
this.$message.warning(error)
this.ruleForm.fileItem.pop()
},