背景:
最近在做一个图片上传的功能,并且每次上传后的图片需要做过一番处理,但是如果下次想修改,则需要再次传此张图片。
那么使用input 的type为file,使用change事件,下一次获取与上一次同样的图片时,将无法重新展示。
解决方案:
代码如下:
initUpload(){
let self = this;
let oFile = this.$refs.qrCodefile;
function changeFn() {
oFile.setAttribute('type','file');
let files = this.files;
lrz(files[0], {
width: 750,
quality: 0.4,
})
.then(function (rst) {
// 处理成功会执行
let name = rst.origin.name;
let ext = '';
if(name.indexOf('.') > -1){
ext = name.substring(name.lastIndexOf('.') + 1);
}
self.beforeUploadImage(rst.base64, ext);
oFile.setAttribute('type','text'); //主要就是这两句操作
oFile.setAttribute('type','file');
})
.catch(function (err) {
console.log(err)
// 处理失败会执行
})
.always(function () {
// 不管是成功失败,都会执行
});
}
oFile.addEventListener('change', changeFn);
},
优化版本1:
经过测试发现 系统版本为ios8、ios10 可能会出现设置为text不再回来。所以只要把设置为type 为text那一行注释掉即可。