vue中element 上传功能的实现思路
程序员文章站
2023-11-23 17:32:04
element 的上传功能
最近有个需求,需要在上传文件前,可以进行弹窗控制是否上传 upload
看完文档后,感觉有两种思路可以实现
before-upload...
element 的上传功能
最近有个需求,需要在上传文件前,可以进行弹窗控制是否上传 upload
看完文档后,感觉有两种思路可以实现
before-upload
auto-upload, on-change
before-upload
初始代码
// template <el-upload class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/" :show-file-list="false" :on-success="handleavatarsuccess" :before-upload="beforeavatarupload"> <img v-if="imageurl" :src="imageurl" class="avatar"> <i v-else class="el-icon-plus avatar-uploader-icon"></i> </el-upload> // javscript data() { return { imageurl: "" }; }, methods: { handleavatarsuccess(res, file) { this.imageurl = url.createobjecturl(file.raw); }, beforeavatarupload(file) { // 文件类型进行判断 const isjpg = file.type === "image/jpeg"; const islt2m = file.size / 1024 / 1024 < 2; if (!isjpg) { this.$message.error("上传头像图片只能是 jpg 格式!"); } if (!islt2m) { this.$message.error("上传头像图片大小不能超过 2mb!"); } return isjpg && islt2m; } }
初始效果图
考虑在before-upload中进行弹窗后, return false | reject() 即可
修改代码
由于 this.$confirm 是异步操作,因而需要等待其结果才能进行下一步操作
async beforeavatarupload(file) { const issubmit = await this.$confirm('此操作将上传文件, 是否继续?', '提示', { confirmbuttontext: '确定', cancelbuttontext: '取消', type: 'warning' }).then(() => { return true }).catch(() => { return false }); console.log(issubmit) return issubmit; }
确认提交和取消提交 ==> 结果却一样
确认提交
取消提交
结果却不可以,因而考虑另一种思路了, before-upload 只是进行判断文件是否适合,从而是否上否上传到服务器,而不是用来等待用户进行操作使用的
手动上传
auto-upload on-change // template <el-upload ref="upload" class="upload-demo" action="https://jsonplaceholder.typicode.com/posts/" :on-preview="handlepreview" :limit="1" :auto-upload="false" :on-change="handlechange" :show-file-list="true" :file-list="filelist" :on-error="handleerror" :on-success="handlesuccess"> <el-button size="small" type="primary">点击上传</el-button> </el-upload> // js data() { return { filelist: [ ], bool: true } }, methods: { handleremove(file, filelist) { console.log(file, filelist); }, handlepreview(file) { console.log(file); }, handleerror(err, file) { alert('失败') this.filelist = [] }, handlesuccess(res, file) { alert('成功') this.filelist = [] }, handleexceed(files, filelist) {}, async handlechange() { const issubmit = await this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', { confirmbuttontext: '确定', cancelbuttontext: '取消', type: 'warning' }).then(() => { return false }).catch(() => { return true }); if (issubmit) { this.$refs.upload.submit() } else { this.filelist = [] } } }
确认提交
取消提交
此方法可行,现在就是控制因为文件状态改变而导致两次弹窗, 修改如下
文件状态变更 不是成功就是失败,因而在成功失败的函数进行控制即可
添加flag标识进行控制弹窗即可
data() { return { isconfirm: true } } async handlechange() { if (!this.isconfirm) { this.isconfirm = true return } const bo = await this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', { confirmbuttontext: '确定', cancelbuttontext: '取消', type: 'warning' }).then(() => { return false }).catch(() => { return true }) if (bo) { this.$refs.upload.submit() this.isconfirm = false } else { this.filelist = [] } }
修改后便可以了,只是注意 在 on-error 和 on-succes 中注意清空 filelist = [] ,这样还可以重新添加文件
确定上传
取消上传
总结
以上所述是小编给大家介绍的vue中element 的上传功能的实现思路,希望对大家有所帮助
推荐阅读
-
vue中element 上传功能的实现思路
-
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
-
vue基于element-ui的三级CheckBox复选框功能的实现代码
-
VUE + UEditor 单图片跨域上传功能的实现方法
-
Servlet+Jsp实现图片或文件的上传功能具体思路及代码
-
node.js中实现kindEditor图片上传功能的方法教程
-
vue中实现图片和文件上传的示例代码
-
Oracle SQL中实现indexOf和lastIndexOf功能的思路及代码
-
vue.js 图片上传并预览及图片更换功能的实现代码
-
vue 使用element-ui中的Notification自定义按钮并实现关闭功能以及如何处理多个通知