记录关于el-upload限制文件上传个数后无法上传问题

项目场景:

项目中使用到el-upload实现列表上导入数据的功能,这里只需要导入一个excel即可,所以limit设置为1。

<el-upload ref="upload" style="display: none" :limit="1" :http-request="handleImport">
	<el-button ref="uploadButton" />
</el-upload>


handleImport(){
	const File = param.file;
    let formDataInfo = new FormData();
    formDataInfo.append("file", File);
    // 调用接口
}

问题描述/原因分析

在导入文件时,上传一个文件正常调用接口,但当再次导入时,则不调用接口,且控制台没有报错信息。如果将页签关闭重开或刷新页面后,则可以重新上传。

二次上传时handleImport方法并未被调用,考虑到是limit设置为1,导致只允许上传一个文件。


解决方案:

由于业务需要不能去掉上传个数限制,所以选择在每次上传成功后,清空上传的文件。


this.$refs.upload.clearFiles()

`el-upload` 是 Element UI 提供的一个用于文件上传的组件。默认情况下,当用户选择完文件后并不会立即触发上传操作,而是等待手动点击“确定”按钮或其他自定义事件再进行提交。 如果你希望实现在选择了文件之后就马上自动开始上传功能,则可以按照以下步骤调整设置: ### 立即上传配置 1. **设置 `auto-upload` 属性** 将 `auto-upload="true"` 添加到 `<el-upload>` 标签内,这会让组件在选好文件后直接发起网络请求将数据发送给服务器端处理。 2. **监听 change 事件** 如果你需要进一步控制上传行为或获取更多信息,还可以通过绑定 `change` 监听函数,在这里你可以做额外的操作比如显示进度条等。 3. **检查 action 参数** 确保已经指定了正确的上传地址 (`action`) ,这个 URL 应该指向接收并保存文件的服务端接口。 4. **其他可选属性** - 可能还需要考虑是否开启分片、限制最大尺寸等功能选项来优化用户体验;例如使用 `limit`, `on-exceed` 来管理文件数目上限及其溢出提示。 - 设置 `headers` 和携带认证信息(如 Token),以便安全地向受保护资源传递凭证。 下面是一个简单的例子展示如何让 `el-upload` 组件在选择文件后立刻上传: ```html <template> <div> <!-- auto-upload=true 表示选择文件后立即上传 --> <el-upload class="upload-demo" :action="yourUploadUrl" name="file" :data="otherFormData" :before-upload="handleBeforeUpload" :on-success="handleSuccess" :on-error="handleError" :auto-upload="true"> <button type="button">点击上传</button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件</div> </el-upload> </div> </template> <script setup lang='ts'> import { ref } from 'vue'; // 示例变量初始化 const yourUploadUrl = "https://example.com/upload"; // 替换为目标URL let otherFormData = {}; // 其他需要一起POST的数据体 function handleBeforeUpload(file) { console.log('准备上传:', file); } function handleSuccess(response, uploadFile) { console.log('成功响应:', response); console.log('已上传文件:', uploadFile); } function handleError(err, uploadFile) { console.error('失败错误:', err); } </script> ``` 这样配置完成后,只要用户挑选了想要上传的内容就会即时启动传输过程,并且回调相应的钩子方法来进行反馈更新UI状态或是记录日志之类的任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值