elementui el-upload一次请求上传多个文件
Element UI 的 el-upload
组件默认支持多文件上传,你只需要设置 multiple
属性即可。如果你想要在一个请求中上传多个文件,你需要使用 before-upload
钩子函数来控制文件的上传,并使用 FormData 来构造一个包含多个文件的请求体。
以下是一个简单的例子,展示如何使用 Element UI 的 el-upload
组件在一次请求中上传多个文件:
<template>
<el-upload
:action="uploadUrl"
list-type="text"
:before-upload="handleBeforeUpload"
:on-success="handleSuccess"
:file-list="fileList"
>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</template>
<script>
export default {
data() {
return {
uploadUrl: '你的上传接口地址',
fileList: [],
uploadFiles: []
};
},
methods: {
handleBeforeUpload(file) {
this.uploadFiles.push(file);
return false; // 阻止默认上传
},
handleSuccess(response, file, fileList) {
// 所有文件上传完毕的逻辑处理
},
submitUpload() {
const formData = new FormData();
this.uploadFiles.forEach((file, index) => {
formData.append(`file${index}`, file);
});
// 使用 Axios 或者其他 HTTP 库发送请求
// axios.post(this.uploadUrl, formData).then(response => {
// this.handleSuccess(response.data);
// });
}
}
};
</script>
在这个例子中,我们使用了 before-upload
钩子来收集所有待上传的文件,并将它们存储在 uploadFiles
数组中。我们并没有真正地上传文件,而是返回 false
来阻止默认的上传行为。然后,我们提供了一个方法 submitUpload
来构造一个包含所有文件的 FormData
对象,并发送一个 POST 请求到服务器。
注意:你需要替换 uploadUrl
为你的实际上传接口地址,并且替换 axios.post
为你选择的 HTTP 库来发送请求。
这样,当用户选择了多个文件后,你可以通过调用 submitUpload
方法来上传这些文件,所有的文件将会在一个请求中发送到服务器。
评论已关闭