el-upload单文件上传替换
时间: 2023-09-05 19:06:52 浏览: 146
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
如果你想要使用 `el-upload` 实现单文件上传并且替换已上传的文件,可以按照以下步骤进行:
1. 首先在 `el-upload` 中设置 `:auto-upload="false"`,这样选择文件后不会自动上传;
2. 在 `el-upload` 中添加一个按钮,当用户点击该按钮后触发上传事件;
3. 在上传事件中,首先判断是否已经上传过文件,如果上传过,则将已上传的文件删除;
4. 然后上传新文件。
以下是示例代码:
```vue
<template>
<el-upload
class="upload-demo"
:action="uploadUrl"
:auto-upload="false"
:on-success="handleSuccess"
:on-error="handleError"
>
<el-button slot="trigger" size="small" type="primary">选择文件</el-button>
<el-button size="small" type="success" @click="uploadFile">上传文件</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
</template>
<script>
export default {
data() {
return {
uploadedFileUrl: '', // 已上传的文件地址
uploadUrl: 'your_upload_url', // 上传接口地址
file: null, // 选中的文件
};
},
methods: {
// 上传成功回调函数
handleSuccess(response, file, fileList) {
this.uploadedFileUrl = response.url;
},
// 上传失败回调函数
handleError(err, file, fileList) {
this.$message.error('上传失败');
},
// 上传文件
uploadFile() {
if (this.uploadedFileUrl) {
// 如果已上传过文件,则删除已上传的文件
this.$axios.post('your_delete_url', { url: this.uploadedFileUrl })
.then(() => {
this.file && this.$refs.upload.submit(); // 上传新文件
})
.catch(() => {
this.$message.error('删除文件失败');
});
} else {
this.file && this.$refs.upload.submit(); // 上传新文件
}
},
},
};
</script>
```
注意,在这个示例中,需要使用 `this.$axios` 发送删除文件的请求,你需要根据你的实际情况进行修改。同时,还需要根据你的实际需求进行接口地址、文件大小、文件类型等的设置。
阅读全文