谭小谭
谭小谭
  • 发布:2021-09-30 11:52
  • 更新:2023-09-01 15:31
  • 阅读:2275

【报Bug】uni.uploadFile在不上传图片时,报TypeError: Cannot read property 'indexOf' of undefined

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 10

手机系统: 全部

手机厂商: 华为

页面类型: vue

打包方式: 云端

项目创建方式: CLI

CLI版本号: 2.0.0-32920210927001

测试过的手机:

苹果xs,华为P30

示例代码:

uni.uploadFile({
url: configUrl.API_HOST + '/csoi/pm/app/elevationPile/designDatas',
files: images,
fileType: 'image',
formData: this.formValue,
name: 'file',
header: {
'Content-Type': 'multipart/form-data',
Authorization: 'Bearer' + ' ' + token
},
success: uploadFileRes => {}
});

操作步骤:

formData正常上传,不上传图片就会报错

预期结果:

uni.uploadFile在上传图片和不上传图片时都应该像之前的版本一样不报错

实际结果:

新版本不传图片会报错Cannot read property 'indexOf' of undefined;

bug描述:

uni.uploadFile在不上传图片时,报TypeError: Cannot read property 'indexOf' of undefined;
因业务需要,用户上传数据,图片不是必选项,当用户上数据上传一张或以上,能正常上传,但是当用户不上传图片时,uni.uploadFile会报Cannot read property 'indexOf' of undefined,这种情况是我今天更新了hbx和cli出现的。在更新之前,用户不上传照片是不会报错的。麻烦官方看下,是不是升级出了错误,具体代码如下
uni.uploadFile({
url: configUrl.API_HOST + '/csoi/pm/app/elevationPile/designDatas',
files: images,
fileType: 'image',
formData: this.formValue,
name: 'file',
header: {
'Content-Type': 'multipart/form-data',
Authorization: 'Bearer' + ' ' + token
},
success: uploadFileRes => {}
});
其中images数据在有图片时格式为:[{
"name": "img0",
"uri": "_doc/uniapp_temp_1632973493543/camera/1632973805767.jpg"
}, {
"name": "img1",
"uri": "_doc/uniapp_temp_1632973493543/camera/1632973810330.jpg"
}]
无图片格式为:[{"uri":"","name":""}]

2021-09-30 11:52 负责人:无 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

上传文件接口必传文件

  • 谭小谭 (作者)

    问题一是,我在没更新之前都可以不传呢,而且文档files也是说的非必穿啊,问题二,我业务一个form表单,图片本来就是非必传啊,files非必传更灵活一些啊,不然用户不传图片的时候,我还得另外调一次接口?怎么越升级越不好用了啊

    2021-09-30 14:59

  • DCloud_UNI_GSQ

    回复 谭小谭: 一直未改动,文件上传接口必须上传文件。

    2021-09-30 15:10

  • 谭小谭 (作者)

    回复 DCloud_UNI_GSQ: 我上传了个附件,你看下呢

    2021-09-30 15:17

谭小谭

谭小谭 (作者) - 90后前端

这不是文档上写的,非必传啊,而且未升级之前,确实是非必传啊,我线上一直在用,这次升级了,就不行了

  • DCloud_UNI_GSQ

    filePath 呢

    2021-09-30 15:21

  • DCloud_UNI_GSQ

    回复 DCloud_UNI_GSQ: 你之前在用的版本是多少,回退测试一下

    2021-09-30 15:21

  • 谭小谭 (作者)

    回复 DCloud_UNI_GSQ: 我代码一直都没用filePath哦,直接用的files。我之前主分支的SDK版本为:1.9.9.80859,现在线上都在用,没有问题的。我后面建了个新分支,npm update,并且重新下载了依赖包,就不行了,uni.uploadFile这个方法不传图片就要报错,我自身的业务代码都是没变的,所以我很奇怪为啥升级了,不传图片反而不行了,不科学啊

    2021-09-30 15:41

  • 谭小谭 (作者)

    回复 DCloud_UNI_GSQ: 而且,现在新分支上,我也没用filePath ,只是不传图片会报错,传了图片也是不会报错的,所以和filePath 应该没太大关系吧

    2021-09-30 15:42

  • 谭小谭 (作者)

    回复 DCloud_UNI_GSQ: 而且文档也说了啊,使用 files 时,filePath 和 name 不生效

    2021-09-30 15:45

  • 谭小谭 (作者)

    回复 DCloud_UNI_GSQ: 收假啦,收假啦,麻烦看下问题啦,么么哒

    2021-10-08 11:07

  • DCloud_UNI_GSQ

    回复 谭小谭: 问:为什么不传不行?答:设计上是必传的。问:为什么之前好的现在不行?答:初期实现可能有不严谨的地方后续实现和设计更接近了。问:后续可能会修改成非必传吗?答:有可能,不过优先级不高,毕竟跨平台兼容性不佳。问:现在怎么处理?答: 无文件时改用方式比如 request 等。

    2021-10-08 12:00

  • 谭小谭 (作者)

    回复 DCloud_UNI_GSQ: 哦了,明明白白

    2021-10-08 13:32

  • 谭小谭 (作者)

    回复 DCloud_UNI_GSQ: 不过还是提个建议,如果代码改动了,文档最好也更新一下,不然按照文档来就行不通

    2021-10-08 13:33

  • DCloud_UNI_GSQ

    回复 谭小谭: 问:文档描述和接口设计是否相符?答:相符。问:为什么不同人理解的不同?答:后续改进文档描述,争取每个人都能正确理解。

    2021-10-08 14:39

  • 1***@qq.com

    回复 DCloud_UNI_GSQ: 我也遇到了这个问题h5可以上传成功,但是app用uni.uploadfile就提示‘TypeError: Cannot read property 'indexOf' of undefined’,传了filePath 也没有用

    2022-08-01 16:11

  • 1***@qq.com

    回复 1***@qq.com: 后来呢咋解决我也遇到了,头疼

    2022-09-21 10:20

  • 1***@qq.com

    回复 1***@qq.com: 后来怎么解决了? 我也遇到了

    2022-10-22 16:50

  • 1***@qq.com

    回复 1***@qq.com: 后来怎么解决了? 我也遇到了

    2022-10-22 16:50

k***@163.com

k***@163.com

H5可以用,app不行,找了半天我还以为我写错了,妈的,垃圾文档

1***@qq.com

1***@qq.com

这问题还没解决吗,上传文件一直报TypeError: Cannot read property 'indexOf' of undefined

  • y***@163.com

    请问这个问题解决了吗?怎么解决的呢?

    2023-03-03 13:45

  • 1***@qq.com

    回复 y***@163.com: 项目迭代用了uview的上传组件

    2023-05-11 17:27

c***@sohu.com

c***@sohu.com

今天也遇到了,APP没文件死活不行

c***@sohu.com

c***@sohu.com

曲线救国:没有文件时,传空值[{name:'',uri:''}]可以

  • 灰色代码

    传 [{ name: '', uri: '1' }] 才行,uri为空也报错

    2024-04-16 17:47

要回复问题请先登录注册