uni-app Hbuildx3.1.11 api uni.chooseVideo 返回的绝对路径导致Android端真机运行上传视频失败
uni-app Hbuildx3.1.11 api uni.chooseVideo 返回的绝对路径导致Android端真机运行上传视频失败
问题确认,已加分,即将修复
真机出现问题的可以重新打包自定义基座尝试。
或者采用临时解决方案:启用压缩,判断返回路径为绝对路径时拼接 ‘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 上传实际路径错误。
麻烦官方尽快确认下,谢谢!
请问下一个版本什么时候更新
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系统对临时文件访问权限有限制,或路径格式不兼容上传接口。
解决方案:
- 使用
uni.uploadFileAPI时,直接传入chooseVideo返回的tempFilePath,无需处理为绝对路径。例如:uni.chooseVideo({ success: (res) => { uni.uploadFile({ url: 'YOUR_UPLOAD_URL', filePath: res.tempFilePath, // 直接使用临时路径 name: 'file', success: (uploadRes) => console.log(uploadRes.data) }); } });


