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

1. 问题描述

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

2. 问题分析

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

第一次

第二次

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

3.问题解决

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

<!-- 拍照上传 -->
<el-upload
v-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

el-upload拍照上传多个文件报错 ERR_UPLOAD_FILE_CHANGED问题的更多相关文章

  1. windows中修改catalina.sh上传到linux执行报错This file is needed to run this program解决

    windows中修改catalina.sh上传到linux执行报错This file is needed to run this program解决 一.发现问题 由于tomcat内存溢出,在wind ...

  2. Git上传代码遇到的报错

    Git上传代码遇到的报错 1.git上传代码卡住(Total 7072 (delta 2508), reused 6844 (delta 2376), pack-reused 0) git confi ...

  3. Java连接FTP成功,但是上传是失败,报错:Connected time out

    Java代码在本机上传文件到FTP服务器的时候成功,但是部署到测试服务器的时候出现,连接FTP成功但是上传失败,并且报Connected time out错误: 测试服务器和FTP服务都在阿里云上:( ...

  4. HTML5+ 拍照上传 和选择文件上传

    HTML 页面内容包含以下标签即可: <input id="btn_select" type="button" value="从相册选择&quo ...

  5. LR录制附件上传后,回放报错

    使用LR录制附件上传后,点击回放,发现报错:没有找到上传的文件 Could not obtain information about submitted file "C:\Users\Adm ...

  6. dnmp(docker的lnmp)安装WordPress之后图片上传问题 问题:图片上传大小问题解决和 报错413 Request Entity Too Large

    首先是提示超过图片尺寸和大小, 最后发现都是图片大小的问题, 需要修改php的最大上传size 修改之后查看php配置  已经生效  但是还是报错, 提示返回不是合法的json,  查看控制台, 报错 ...

  7. 自己封装framworks上传到应用商店报错

    参考链接: http://www.jianshu.com/p/60ac3ded34a0 http://ikennd.ac/blog/2015/02/stripping-unwanted-archite ...

  8. git上传到版本库报错:Pull is not possible because you have unmerged files(已解决)

    问题所在:操作次数太多,第一次报错之删掉了.git并没有删除下面两个文件 才报了题述错误. 解决办法: 将这三个文件都删除在重新运行所有指令.

  9. 解决上传代码到GitHub报错Push rejected: Push to origin/master was rejected

    最近在 push 代码到 github 时,IDEA报错 Push rejected: Push to origin/master was rejected 在网友找了一圈,发现都不是想要的答案 于是 ...

  10. android studio上传项目到github报错Successfully created project 'Demo' on GitHub, but initial commit failed:

    今天博主正在愉快地学习在AndroidStudio中使用Git,结果报了下面这个错∑(っ°Д°;)っ: Can't finish GitHub sharing process Successfully ...

随机推荐

  1. 怀里橘猫柴犬,掌上代码江湖——对话阿里云 MVP郭旭东

    简介: 跟郭旭东聊过之后,我对程序员的敬佩又多一分.这个92年的开发者,难能可贵地兼备朝气蓬勃的技术能量与长远深刻的行业洞见.独自承担DevOps平台从0到1的所有工作,我打趣说超级开发者不过如此,他 ...

  2. 走进RDS|说说关系型数据库与Serverless

    ​简介:看到如今Serverless在云计算行业喷薄欲出的态势,像极了<星星之火,可以燎原>中的描述:虽然不能预测未来的发展和变化,但对于云计算来说这是个相对确定的方向.本文将和大家说说关 ...

  3. 如何保证 Serverless 业务部署更新的一致性?

    简介: 代码在其他场景被更新,需要我们在当前得到感知,这个事情其实是非常重要的,和代码的安全发布密不可少.而此时,通过 Serverless Devs 是可以做到的. 作者|Anycodes​ 从我做 ...

  4. 谈谈C++新标准带来的属性(Attribute)

    简介: 从C++11开始,标准引入了一个新概念"属性(attribute)",本文将简单介绍一下目前在C++标准中已经添加的各个属性以及常用属性的具体应用. 作者 | 寒冬来源 | ...

  5. [FAQ] golang-migrate/migrate error: default addr for network '127.0.0.1:3306' unknown

    按照项目github文档上所示,在使用 mysql 时你可能会这样写: $ migrate -path db/migrations -database mysql://root:123456@127. ...

  6. localstory,sessionstory,vuex,cook

    函数式组件 1.特点 没有this(没有实例) 没有响应式数据 它只是一个接受一些 prop 的函数. render MVVM分为Model.View.ViewModel三者. Model:代表数据模 ...

  7. 【爬虫实战】用python爬今日头条热榜TOP50榜单!

    目录 一.爬取目标 二.爬取结果 三.代码讲解 四.技术总结 五.演示视频 六.附完整源码 一.爬取目标 您好!我是@马哥python说,一名10年程序猿. 今天分享一期爬虫案例,爬取的目标是:今日头 ...

  8. Oracle数据库下的DDL、DML、DQL、TCL、DCL

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...

  9. 腾讯、阿里、B站最新面经汇总,有的妥妥的凉经。

    除了BAT(没错我说的B是B站的B),还有网易.希音科技.美柚等中小厂的最新面经. 这次投稿的同学行文幽默风趣,处处透漏着不成功便搞笑的骚气. 祝他早日上岸,也欢迎大家在评论区讨论这些面试题,有哪些面 ...

  10. C 语言编程 — 基本语法

    目录 文章目录 目录 前文列表 C 语言 C 语言的版本 C 语言的特点 C 语言的优点 C 语言的缺点 搭建编程环境 基本语法 前文列表 <程序编译流程与 GCC 编译器> C 语言 C ...