记录下项目过程中使用el-upload文件上传遇到的一些坑~
一、before-upload方法。
element官方是这样说明的:
微信图片_20220608102140.png
但是要注意1、:auto-upload 为false时是不生效的;
若想实现同样的功能,即判断文件或图片是否符合要求;可在on-change中做相应的操作。
2、: 会出现before-upload返回false时,文件仍然上传成功并展示在了文件列表中,这是因为on-change事件始终都被触发了。
网上寻求办法都是说通过返回promise可以解决,被reject后就会停止上传。(我自测没有生效是因为我的before-upload是在on-change事件里去调用的,原因是on-change事件可以获取到fileList,而before-upload只能拿到当前上传的文件,所以我只能在change事件里去过滤掉不符合规范的文件,为了避免大改项目只能这样子了。)
beforeUpload (file) {
return new Promise((resolve, reject) => {
var testmsg=/^image\/(jpeg|png|jpg)$/.test(file.type)
const isLt2M = file.size / 1024 / 1024 <=2//图片大小不超过2MB
if (!testmsg) {
this.$message.error('上传图片格式不对!');
return reject(false);
}
if(!isLt2M) {
this.$message.error('上传图片大小不能超过 2M!');
return reject(false);
}
return resolve(true)
});
},
其实不加on-change事件的话,before-upload直接返回false是可以停止上传的。
el-upload上传成功之后不展示状态的解决:
http-request绑定的上传方法必须添加return返回(不加return不好使),并且要返回一个promise对象,不然就会出现file一直是处于ready的状态,即使你是自己在file-list手动赋值success也是会自动变成ready的,而ready状态是不显示成成功状态的。(参考链接:https://zhuanlan.zhihu.com/p/457370276)
欢迎各位大佬指导讨论~