问题
使用element-ui
上传多文件时,发送请求出现多次提交问题,重复上传
警告: 切勿将发送后台请求的
axios
方法写在自定义上传方法如:http-request="handleHttpRequest"
中,否则将会按文件数量发送,造成多次请求,不符合预期提交一次上传多个文件。
覆盖默认上传,自定义上传:http-request
覆盖默认上传方法,使用自定义上传方法
<el-form-item label="附件" :label-width="formLabelWidth">
<el-upload
class="upload-demo"
ref="upload"
action="/"
:on-change="changeFile"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="5"
:on-exceed="handleExceed"
:file-list="fileList"
:http-request="handleHttpRequest"
:auto-upload="false"
list-type="picture-card"
>
<el-button slot="trigger" size="small" type="primary"
>上传附件</el-button
>
<div
slot="tip"
class="el-upload__tip"
style="float: right;color: #E6A23C"
>
只能上传jpg/png/gif文件,且不超过10Mb
</div>
</el-upload>
<el-dialog :visible.sync="dialogVisible" append-to-body>
<img width="100%" :src="dialogImageUrl" alt="" />
</el-dialog>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleCancel('add')">取 消</el-button>
<el-button type="primary" @click="handleOk('add')">确 定</el-button>
</div>
上传方法handleHttpRequest
handleHttpRequest(file) {
this.formObj.append("file", file.file);//将文件放入file中
}
提交方法 handleOk
handleOk() {
let vm = this;
vm.formObj = new FormData();
vm.$store
.dispatch("card/addCmPersonalCertAndAttach", vm.formObj)
.then(() => {
vm.form = {};
vm.fileList = [];
vm.$message.success("添加成功");
vm.query();
});
vm.$refs.upload.submit();
vm.addDialog = false;
}