avue文件上传组件的使用
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
引用avue-form 的代码
<avue-form :option="imgOption" v-model="imgForm"
:upload-preview="uploadPreview"
:upload-error="uploadError"
:upload-delete="uploadDelete"
:upload-before="uploadBefore"
:upload-after="uploadAfter"
@submit="handleSubmit" >
</avue-form>
定义
imgOption: {
labelWidth: 120, // 去除保存按钮和清空按钮,清空按钮,假如我引用其他组件一起进来,无法清空其他表单的值,遂这我就都删了
emptyBtn: false,
submitBtn: false,
column: [
{
label: '附件上传',
prop: 'imgUrl', //支持多个文件上传
multiple: true,
type: 'upload',
loadText: '附件上传中,请稍等',
span: 24,
propsHttp: {
//假如选择了多个附件同时上传需要定义如下data.0 这样上传成功后,回显图片就会调用多次uploadAfter // res: 'data'
res: 'data.0'
},
tip: '上传的文件不超过1M', // 上传的方法
action: '/upload-file'
},
]
},
imgForm: { imgUrl: [] //展示上传后信息 // imgUrl:[ // { "label": "avue@226d5c1a_image.png", "value": "/images/logo-bg.jpg" }, // {"label": "avue@226d5c1a_video.png", "value": 'https://www.w3school.com.cn/i/movie.ogg'} // ], },
上传的一些方法的实现
//删除已经上传的文件
uploadDelete(column, path) {
//参考 https://blog.csdn.net/qq_41976264/article/details/107762239
console.log(column, path);
let url = path.url;
if (url) {
let splitter = "/file/";
let split = url.split(splitter);
let element = split[1];
let pathUrl = element.split("/");
let id = pathUrl[0];
let fileName = pathUrl[1];
return new Promise((resolve, reject) => {
this.$confirm(`是否确认删除名称为${fileName}`, "提示", {
confirmButtonText: "确 定",
cancelButtonText: "取 消",
type: "warning"
}).then(() => {
// 重点来了这里操作完以后一定一定要resolve出去,因为这样avue会将原来的数据给清除 如果不resolve,那么再添加图片的话 他会把得到的路径与之前的拼接成一个字符串用“,”分割
axios.post('/file/delete', {id: id});
//返回的是否成功状态,都无法使用,默认会返回成功!!
resolve()
}).catch(() => {
// 这里也一定一定要reject,虽然不搞 看似好像没问题 保险起见还是给写上,毕竟我不想再爬坑了 哈哈哈
reject();
this.$message({
type: 'info',
message: '已取消删除'
})
})
})
}
},
uploadBefore(file, done, loading, column) {
console.log(file, column);
// 如果你想修改file文件,由于上传的file是只读文件,必须复制新的file才可以修改名字,完后赋值到done函数里,如果不修改的话直接写done()即可
// var newFile = new File([file], {type: file.type});
// done(newFile)
done();
},
uploadError(error, column) {
this.$message.error('上传失败');
console.log(error, column)
},
uploadAfter(res, done, loading, column) {
// 该位置拼接有问题
console.log("===============uploadAfter================"); // 后端需直接返回name=“xxxx” url=“xxxx” 才行,可以看avue官网的上传 F12 中看network 就可以看到她的返回格式 // 刚开始我以为可以直接进行 imgUrL 的push 无论怎么使用,都是有问 // 多个文件的上传,在 propsHttp 配置为 res: 'data.0' 就会多次调用uploadAfter方法,进行对图片,文件的回显操作
done();
// this.$message.success('上传后的方法')
},
//上传后进行点击预览
uploadPreview(file, column, done) {
console.log(file, column);
//默认执行打开方法
done();
},
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献3条内容
所有评论(0)