apicloud apicloud

注册
查看: 1569|回复: 12

[BUG] api.ajax方法上传文件时,文件路径带%报错问题

主题:
6
帖子:
29
云币:
39

[BUG] api.ajax方法上传文件时,文件路径带%报错问题

1569 12 | 发表于 2021-5-11 15:59:34 |阅读模式 | |
本帖最后由 你的城主大人 于 2021-5-12 09:53 编辑

问题对象:api.ajax
需求:上传文件
问题参数:data.files
机型:小米 2s
系统版本:MUI 12.0.2
安卓版本:10

/storage/emulated/0/UZMap/A6082951431664/cache/2021-05-11/a@qq.com 图片.jpg 报错
/storage/emulated/0/UZMap/A6082951431664/cache/2021-05-11/%.jpg 报错
/storage/emulated/0/UZMap/A6082951431664/cache/2021-05-11/aaa.jpg 正确
/storage/emulated/0/UZMap/A6082951431664/cache/2021-05-11/你好.jpg 正确

这是我们app的报错


报错log


同参数在postmen的执行结果


报错log

报错log

postmen确认结果

postmen确认结果

app报错

app报错

主题:
364
帖子:
55035
云币:
22953
发表于 2021-5-11 19:05:15 |
报错截图看看
【奖金150万】“用友·华为云杯”第三届开发者大赛报名开启,APICloud开发者直接报名参加:点击报名

主题:
6
帖子:
29
云币:
39
 楼主| 发表于 2021-5-12 09:55:11 |

图片已更新到问题中

主题:
364
帖子:
55035
云币:
22953
发表于 2021-5-12 12:04:12 |

有特殊符号不行,重命名图片再上传
【奖金150万】“用友·华为云杯”第三届开发者大赛报名开启,APICloud开发者直接报名参加:点击报名

主题:
6
帖子:
29
云币:
39
 楼主| 发表于 2021-5-12 16:51:34 |
本帖最后由 你的城主大人 于 2021-5-12 16:55 编辑
技术支持-F 发表于 2021-5-12 12:04
有特殊符号不行,重命名图片再上传

重命名的代价是我需要把文件拷贝到应用目录,如果文件大一点,会导致效率很慢,而且我们的业务需要尽量的保证原文件名。
隔壁项目调用的也是我们的接口,他们用的uniapp,没有问题。
所以有没有办法支持一下。
之前考虑过使用h5方案把图片读出来,但是现在这时代1亿像素的手机出来了,一张照片20M,读出来直接崩溃,所以又换回原生方案了。

主题:
17
帖子:
7205
云币:
5822
发表于 2021-5-12 17:30:12 |
你的城主大人 发表于 2021-5-12 16:51
重命名的代价是我需要把文件拷贝到应用目录,如果文件大一点,会导致效率很慢,而且我们的业务需要尽量的 ...

这是你们服务器报的错,解析字符串出错了。

主题:
6
帖子:
29
云币:
39
 楼主| 发表于 2021-5-13 09:28:23 |
常山赵子云 发表于 2021-5-12 17:30
这是你们服务器报的错,解析字符串出错了。

同样的文件,同样的接口,
pc,postman,apicloud,dcloud都试过了,就只有apicloud报错
我这边倒是可以通过拷贝文件改名处理,但是终究是个问题
还是希望尽量做改善,毕竟h5程序,ajax访问还是很频繁的

主题:
6
帖子:
29
云币:
39
 楼主| 发表于 2021-5-14 12:30:53 |
本帖最后由 你的城主大人 于 2021-5-14 12:33 编辑
技术支持-F 发表于 2021-5-12 12:04
有特殊符号不行,重命名图片再上传

特殊字符的文件使用fs进行copy时,copy出来的文件是空文件
使用imageFilter进行压缩时,不会进行处理
使用ajax上传时,会发生字段被当做无效字段进行处理,导致后台字段丢失
所以最终结果就是如果文件名中有特殊字符,我无法使用任何手段对这个文件进行处理,虽然可以考虑使用h5手段进行读取压缩,但是大文件会导致程序崩溃。
imageFilter组件进行压缩时,识别扩展名,大写的无法识别,会直接追加".jpg",导致结果与预计不一样,这个应该可以考虑做兼容

这真的很严重,毕竟如果需要我们去自己写组件进行这些处理,有点不太现实,有违初衷。

毕竟一个app总不能要求用户去做修改文件名的操作,毕竟别的都可以,为什么就你不行的这种问题被客户问出来,我们也是不好处理的。

主题:
6
帖子:
29
云币:
39
 楼主| 发表于 2021-5-14 13:41:53 |
技术支持-F 发表于 2021-5-12 12:04
有特殊符号不行,重命名图片再上传

看来是我乐观了,苹果还是安卓来着,读取文件,本地文件算作跨域
看来是没辙了,只能让用户自己去改文件名了,可惜的是苹果手机都没办法自己修改文件名

主题:
364
帖子:
55035
云币:
22953
发表于 2021-5-14 13:47:01 |
你的城主大人 发表于 2021-5-14 13:41
看来是我乐观了,苹果还是安卓来着,读取文件,本地文件算作跨域
看来是没辙了,只能让用户自己去改文件 ...

正常用户拍照出来的照片不会有这样的名称
【奖金150万】“用友·华为云杯”第三届开发者大赛报名开启,APICloud开发者直接报名参加:点击报名
12下一页
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表