我这边有个uni-app uni.uploadFile 直传腾讯cos 原手机默某些文件有内容,传入成功,去cos地址查看就打不开,说是0kb文件,是什么原因啊

我这边有个uni-app uni.uploadFile 直传腾讯cos 原手机默某些文件有内容,传入成功,去cos地址查看就打不开,说是0kb文件,是什么原因啊

测试过的手机:

HarmonyOS 版本 4.0.0

操作步骤:

  • 直传腾讯cos

预期结果:

  • 成功

实际结果:

  • 文件可以打开

bug描述:

我这边有个uni.uploadFile 直传腾讯cos 原手机默某些文件有内容,显示传入成功,去cos地址查看就打不开文件,说是空文件,是什么原因啊,大部分文件都可以,把那个文件复制出来也可以,就原文件不行


| 开发环境           | 版本号 | 项目创建方式 |
|-------------------|-------|--------------|
| Windows            | w10   | HBuilderX    |
| HBuilderX         | 4.45  |              |
| 手机系统           |       | 全部         |
| 手机厂商           |       | 华为         |
| 页面类型           |       | vue          |
| vue版本            |       | vue3         |
| 打包方式           |       | 云端         |
| 项目创建方式       |       | HBuilderX    |

更多关于我这边有个uni-app uni.uploadFile 直传腾讯cos 原手机默某些文件有内容,传入成功,去cos地址查看就打不开,说是0kb文件,是什么原因啊的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

提供可复现此问题的示例项目,在其它手机上也测试是否存在此问题。

更多关于我这边有个uni-app uni.uploadFile 直传腾讯cos 原手机默某些文件有内容,传入成功,去cos地址查看就打不开,说是0kb文件,是什么原因啊的实战教程也可以访问 https://www.itying.com/category-93-b0.html


有的,我几个华为上都有,选择 com.huawei.livewallpaper.pserial.paradise.ParadiseService这种类似自带的图片 会显示上传成功,并返回地址,就是打开显示错误,打不开

回复 阿狸的祈祷: 文件格式是什么?将这些文件拷贝到电脑与上传到服务器的文件进行对比看是否一致? 有些特定文件需要使用特定的工具才能打开。

回复 DCloud_App_Array: 很奇怪,我用的原生插件能找到华为的系统内置图片,uni.chooseImage就找不到这几张图,这几张图反复被你们屏蔽了,难道是权限问题?

回复 阿狸的祈祷: 新版本增加了uni.chooseMedia方法调用的是系统相册选择器,可以使用这个API替换uni.chooseImage

回复 DCloud_App_Array: 没有这个方法,应该没有人故意去提交这些文件的

回复 阿狸的祈祷: app端uni.chooseMedia是4.52-alpha版本新增的,更新到最新版本的alpha才有。详情:https://uniapp.dcloud.net.cn/api/media/video.html#choosemedia

这个问题可能由几个原因导致:

  1. 文件权限问题: 华为HarmonyOS对某些系统文件有特殊权限限制,可能导致uni.uploadFile无法完整读取文件内容。建议检查文件路径是否在应用沙盒内,避免直接操作系统文件。

  2. 文件锁定状态: 原文件可能被系统或其他应用占用锁定,导致上传时只能获取0字节内容。可以尝试:

  • 重启手机后立即上传
  • 将文件复制到应用目录再上传
  1. COS配置问题: 检查腾讯云COS的CORS配置是否正确,特别是PUT方法的权限设置。虽然显示上传成功,但可能因权限问题导致内容被丢弃。

  2. 文件类型限制: 某些特殊文件类型可能被系统限制访问。可以尝试修改文件后缀名测试是否解决问题。

  3. 上传超时: 大文件或特殊文件可能需要更长的上传时间,适当增加timeout参数:

uni.uploadFile({
  timeout: 60000, // 60秒超时
  // 其他参数...
});
回到顶部