el-upload手动上传多个文件
时间: 2023-10-27 07:06:20 浏览: 116
你可以使用el-upload组件手动上传多个文件,具体操作方式如下:
1. 在代码中定义一个el-upload组件,设定multiple属性为true,表示可选择多个文件上传。
2. 通过ref属性获取el-upload组件实例,在点击上传按钮时监听upload方法,遍历上传的文件列表,并通过ajax或fetch请求发送每个文件。
3. 在请求成功或失败时显示相应的提示信息,例如上传成功时弹出成功提示框,上传失败时弹出错误提示框,并显示错误信息。
参考代码如下:
<template>
<el-upload
ref="upload"
:multiple="true"
:on-exceed="handleExceed"
:on-success="handleSuccess"
:on-error="handleError"
:before-upload="beforeUpload"
>
<el-button size="small" type="primary">选取文件</el-button>
<div slot="tip" class="el-upload__tip">
只能上传jpg/png文件,且不超过500kb
</div>
</el-upload>
</template>
<script>
export default {
methods: {
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 ${this.limit} 个文件,最多可选择 ${this.limit} 个`);
},
handleSuccess(response, file, fileList) {
this.$message.success(`文件 ${file.name} 上传成功`);
},
handleError(error, file, fileList) {
this.$message.error(`文件 ${file.name} 上传失败: ${error}`);
},
beforeUpload(file) {
const isJPG = file.type === 'image/jpeg' || file.type === 'image/png';
const isLt500K = file.size / 1024 < 500;
if (!isJPG) {
this.$message.error('上传头像图片只能是 JPG/PNG 格式');
return false;
}
if (!isLt500K) {
this.$message.error('上传头像图片大小不能超过 500KB');
return false;
}
return true;
},
upload() {
const files = this.$refs.upload.uploadFiles;
for (let i = 0, len = files.length; i < len; i++) {
const data = new FormData();
data.append('file', files[i].raw);
// 发送请求,上传文件数据
fetch('/api/upload', {
method: 'POST',
body: data
})
.then(response => response.json())
.then(data => {
// 处理上传成功结果
this.handleSuccess(data, files[i], files);
})
.catch(error => {
// 处理上传失败结果
this.handleError(error, files[i], files);
});
}
}
}
};
</script>
阅读全文