el-upload拍照上传多个文件报错 ERR_UPLOAD_FILE_CHANGED问题

news/2024/10/1 3:36:16

最近同事使用el-upload上传图片时出现一个问题,连续拍照多个图片的时候,循环调用接口上传会报错: ERR_UPLOAD_FILE_CHANGED,网上找了很多方案没有解决,下面是我自己的解决过程。

1. 问题描述

  • 我们用的套壳Android,网页发布在远程服务器,Android壳安装在ipad上
  • 前端用的组件是el-upload,点击后可以选择,拍摄图片上传
  • 选择,拍摄一个文件没有问题,选择多个文件也没有问题,就是拍摄多张图片点击保存的时候报错
  • 选择图片的时候监听el-upload组件的on-change方法得到文件列表uploadFiles
  • 拍摄多张图片的时候,点击提交,拿到文件列表,循环调用接口上传

2. 问题分析

打断点看到能够能够获取到文件列表,并且每次拍摄完都触发on-change事件,问题在从第二次后,uploadFiles数组中的最后一个是原生文件类型,其他都是代理(Proxy)类型,也是奇怪,如下图:
第一次
image

第二次
image

很明显第二次两个文件中的第一个是一个代理类型,不是纯文件类型

3.问题解决

个人猜想可能是拿这个Proxy对象调接口的时候,接口不能识别造成的,于是思路就有了,既然是Proxy类型,那就可以用toRaw方法来把它还原成原生的文件类型,关键代码如下:

<!-- 拍照上传 -->
<el-uploadv-else-if="p.enforceShape == formShape.ELCAMERA"v-model:file-list="p.value"class="upload-demo"accept="image/*":multiple="p.multiple":on-remove="(file, list) => onUpload(p.prop, {file, list},'remove')":on-change="(file, list) => onUpload(p.prop, {file, list},'change')":auto-upload="false"list-type="picture"><el-button type="primary">上传图片</el-button>
</el-upload>
const onUpload = (prop, val, type) => {let list = []if (val.list.length > 0) {for (let i = 0; i < val.list.length; i++) {let file =  toRaw(val.list[i])list.push(file)}}emit('onUpload', prop, {list}, type)
}

最后这样问题就解决了。

3.总结

网上很多都是修改文件后,之前上传的文件已经不存在了,要把文件转成base64格式,上传的时候再转回来,这个对我这个问题不太适用。如下:
https://blog.csdn.net/qubes/article/details/129061173

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/45058.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

基于蛙跳优化的神经网络数据预测matlab仿真

1.程序功能描述通过蛙跳优化算法,优化神经网络的权值参数,然后使用优化后的神经网络模型对数据进行预测,输出预测曲线。2.测试软件版本以及运行结果展示 MATLAB2022a版本运行 3.核心程序% 数据归一化预处理 Vmin1 = min(X); Vmax1 = max(X); Vmin2 = min(Y…

uni-app在微信小程序端自定义组件中样式穿透失效

前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app。 坑位 最近因UI有别的事忙,导致手上暂时没什么活了,我于是抽时间优化项目代码,第一件事就是抽取复用组件。正好项目…

ASP.NET Core应用程序10:使用表单标签助手

本章描述用于创建 HTML 表单的内置标签助手。这些标签助手确保表单提交到正确的操作或页面处理程序方法,并确保元素准确地表示特定的模型属性。本章解释 ASP.NET Core 提供的创建 HTML 表单的功能。展示如何使用标签助手来选择表单目标和关联的 imput、textarea 和 select 元素…

m基于PSO-GRU粒子群优化长门控循环单元网络的电力负荷数据预测算法matlab仿真

1.算法仿真效果 matlab2022a仿真结果如下:优化前: 优化后: 对比如下:2.算法涉及理论知识概要基于粒子群优化(Particle Swarm Optimization, PSO)和长门控循环单元(Gated Recurrent Unit, GRU)网络的电力负荷预测算法,是一种融合了优化技术和深度学习的先进预测模型。…

如何更改IIS中应用程序的虚拟路径

这边的虚拟路径查出来配置错了。 显示的是新建的时候的别名。修改目前我这边是删除重新加一个。

kali更换apt镜像

kali更换apt镜像 vim /etc/apt/sources.list进来之后按i进入编辑模式,把其他的镜像#注释掉之后,加上新的镜像,然后esc退出编辑,按:输入wq保存并退出! 上面的办法不知道为啥没用 修改 /etc/apt/sources.list 文件,也即修改镜像源,能够加快在下载和更新相关软件数据;否则…

数据结构与算法1 简要复习

1.三种复杂度 Ο,读音:big-oh;表示上界,小于等于。 Ω,读音:big omega、欧米伽;表示下界,大于等于。 Θ,读音:theta、西塔;既是上界也是下界,称为确界,等于。 2.抽象数据类型 3.堆,栈(queue,stack) 4.哈希线性探测 二次探测(重要) 二次哈希5.二叉搜索树(BS…

17岁中专女生爆冷逆袭全球数学竞赛12名

17岁中专女生自学偏微分方程,爆冷逆袭高分入围全球数学竞赛,获得竞赛第12名,兴趣是最好的老师。前言 兴趣是最好的老师。 看看她怎么说