uni-app Hbuildx3.1.11 api uni.chooseVideo 返回的绝对路径导致Android端真机运行上传视频失败

uni-app Hbuildx3.1.11 api uni.chooseVideo 返回的绝对路径导致Android端真机运行上传视频失败

22 回复

问题确认,已加分,即将修复
真机出现问题的可以重新打包自定义基座尝试。
或者采用临时解决方案:启用压缩,判断返回路径为绝对路径时拼接 ‘file://’
uni.chooseVideo({
compressed: true,
success(res) {
const tempFilePath = (res.tempFilePath.startsWith(’/’) ? ‘file://’ : ‘’) res.tempFilePath
// …
}
})

更多关于uni-app Hbuildx3.1.11 api uni.chooseVideo 返回的绝对路径导致Android端真机运行上传视频失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html


麻烦官方尽快确认下

先关闭视频压缩

我们现在需要视频压缩的功能,是否可以增加个api ,将绝对路径,转换成为相对路径,或者有别的解决办法吗?

若uni.chooseVideo 改为不压缩 compressed:false后,此api uni.chooseVideo 没有任何响应,fail 也不回调!

回复 狼性做事: 示例demo发下看看

回复 DCloud_Android_ST: let _this = this uni.chooseVideo({ count: 1, compressed:false, maxDuration: 15, sourceType: [‘camera’], success: function(res) { console.log(res) console.log(‘视频大小----’,res.size)

回复 DCloud_Android_ST: uni.chooseVideo 设置不压缩后 无任何响应,设置压缩后,可以正常返回 压缩后的视频绝对路径

回复 DCloud_Android_ST: uni.chooseVideo设置压缩后,返回的绝对路径是/storage/emulated/0/Android/data/包名/apps/UNI12BACCD/temp/compress_video_65568970.mp4 而将这个绝对路径传给 uni.uploadFile的filePath 后,实际上传的路径变成了/storage/emulated/0/Android/data/com.sd.jn.sxzn.xfys/apps/UNI12BACCD/www/storage/emulated/0/Android/data/包名/apps/UNI12BACCD/temp/compress_video_65568970.mp4 显然找不到mp4文件,android直接报 java.io.FileNotFoundException 请问有好的解决办法吗?我们需要压缩这个功能

回复 DCloud_Android_ST: 这个绝对是3.1.11的一个bug,麻烦尽快确认下啊!

回复 DCloud_Android_ST: 设置压缩为false 同样有我上面描述的问题。 uni.uploadFile 上传实际路径错误。

麻烦官方尽快确认下,谢谢!

好像还没有修复 前两天遇到了 我还以为是我代码的问题 找了一天。。确认是bug。。。。

请问下一个版本什么时候更新

HBuilderX 3.1.12 已修复

这个问题在HBuilderX 3.3.13又出现了,我的代码: uni.chooseVideo({ sourceType:[‘album’], // compressed:false, success : (res) => { console.log(res) // this.sendVideoMessage(res); }, fail: (err) => { console.log(err) } })

返回错误: { “errMsg”: “chooseVideo:fail User cancelled”, “errCode”: 12, “code”: 12 }

之前是好了,最近更新了HBuilderX 就出问题了compressed:false,也是一样的,错误说用户取消,可是没有取消啊,是真机调试的

回复 5***@qq.com: 手机是Redmi K30 Ultra

回复 5***@qq.com: 定不是同一个问题,单独发帖详细说明

uni.chooseVideo(OBJECT)这个在录制视频上传的时候,有些手机录制的格式不是mp4,而是3gp,不认这个格式,有知道解决办法的吗?

在uni-app中,uni.chooseVideo返回的临时路径在Android真机上可能因系统版本或设备差异导致上传失败。这是因为部分Android系统对临时文件访问权限有限制,或路径格式不兼容上传接口。

解决方案:

  1. 使用uni.uploadFile API时,直接传入chooseVideo返回的tempFilePath,无需处理为绝对路径。例如:
    uni.chooseVideo({
      success: (res) => {
        uni.uploadFile({
          url: 'YOUR_UPLOAD_URL',
          filePath: res.tempFilePath, // 直接使用临时路径
          name: 'file',
          success: (uploadRes) => console.log(uploadRes.data)
        });
      }
    });
回到顶部