问题描述
el-upload的手动文件上传,发现一个问题,当设置:limit=1的时候,上传一个文件,再上传文件,后上传文件不能覆盖之前上传的文件,有什么办法可以让其自动覆盖掉吗?当然,其他方法也行。
相关代码
下面是我fork过的代码,两个都一样。
1.fiddle
https://jsfiddle.net/vine_yip...
2.codepen
https://codepen.io/Vine_Yip/p...
你期待的结果是什么?实际看到的错误信息又是什么?
自动覆盖 ~~~
el-upload的手动文件上传,发现一个问题,当设置:limit=1的时候,上传一个文件,再上传文件,后上传文件不能覆盖之前上传的文件,有什么办法可以让其自动覆盖掉吗?当然,其他方法也行。
下面是我fork过的代码,两个都一样。
1.fiddle
https://jsfiddle.net/vine_yip...
2.codepen
https://codepen.io/Vine_Yip/p...
自动覆盖 ~~~
不用limit
:on-change="handleChange"
handleChange(files, fileList) {
if (fileList.length > 1) {
fileList.splice(0, 1);
}
}
不用limit这个属性,用下面这个例子再改成你想要的样式。
<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>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
</style>
<script>
export default {
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;
}
}
}
</script>
@寻梦无痕 思路是正确的,但是写的方式有点问题。下面这样处理就可以了。
handleExceed(files, fileList) {
fileList[0].name = files[0].name;
},
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
可以尝试用
on-exceed
监测到超出的文件做下覆盖就行了:on-exceed="onExceed"