elementUI el-upload以formData形式请求一次接口,手动上传多文件至服务器

本文介绍了如何利用elementUI的el-upload组件,通过formData形式实现手动上传多文件,并确保只调用一次接口。在vue项目中,通过subFile方法调用dataReport.js中的接口,参考相关链接解决了每次文件变更都会触发接口请求的问题,实现了在删除文件后能够继续上传剩余文件的功能。

效果图如下:

在这里插入图片描述

index.vue:

<el-form ref="importList" :model="importList" label-position="left" label-width="100px"
                   style="width:70%;margin-left:50px;">
  <el-form-item label="系统名称:" prop="sysName">
    <el-input v-model="importList.sysName" :disabled="true" placeholder="" size="mini"
              style="width: 90%"/>
  </el-form-item>
  <el-form-item label="资源名称:" prop="resName">
    <el-input v-model="importList.resName" :disabled="true" placeholder="" size="mini"
              style="width: 90%"/>
  </el-form-item
ElementUIUpload 组件中,要设置请求头参数为 `multipart`,可以借助 `http-request` 自定义上传方法来实现。下面是一个示例代码: ```vue <template> <el-upload list-type="picture-card" class="upload-demo" action="" ref="upload" :auto-upload="false" :http-request="customUpload" multiple :file-list="fileList" > <i class="el-icon-plus"></i> <div slot="tip" class="el-upload__tip"> 只能上传jpg/png文件,且不超过1Mb <el-button @click="uploadFiles" type="success">上传服务器</el-button> </div> </el-upload> </template> <script> export default { data() { return { fileList: [] }; }, methods: { customUpload({ file, onSuccess, onError }) { const formData = new FormData(); formData.append('file', file); const xhr = new XMLHttpRequest(); xhr.open('POST', 'your_upload_url'); // 设置请求头为 multipart/form-data,不过一般不需要手动设置,浏览器会自动处理 // xhr.setRequestHeader('Content-Type', 'multipart/form-data'); xhr.onload = () => { if (xhr.status === 200) { onSuccess(xhr.response); } else { onError(xhr.statusText); } }; xhr.onerror = () => { onError(xhr.statusText); }; xhr.send(formData); }, uploadFiles() { this.$refs.upload.submit(); } } }; </script> <style scoped> .upload-demo { margin-top: 20px; } </style> ``` 在这个示例里,通过 `http-request` 自定义了上传方法 `customUpload`。在该方法中,创建了一个 `FormData` 对象,把文件添加到其中。接着使用 `XMLHttpRequest` 来发送请求请求头一般不需要手动设置 `multipart/form-data`,因为浏览器会自动处理。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值