uni-app uni.chooseVideo默认压缩后返回文件路径缺少“file://”,未做以前版本兼容,导致uploadVideo路径上传失败

uni-app uni.chooseVideo默认压缩后返回文件路径缺少“file://”,未做以前版本兼容,导致uploadVideo路径上传失败

开发环境 版本号 项目创建方式
Windows Windows10 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

HBuilderX类型:正式

HBuilderX版本号:3.1.11

手机系统:Android

手机系统版本号:Android 11

手机厂商:华为

手机机型:荣耀v30

页面类型:vue

打包方式:云端

操作步骤:
uni.chooseVideo默认压缩后返回文件路径缺少“file://”,没有做以前版本的兼容,导致uploadVideo使用压缩路径上传失败。

预期结果:
uni.chooseVideo默认压缩后返回文件路径能做兼容

实际结果:
uni.chooseVideo默认压缩后返回文件路径缺少“file://”,没有做以前版本的兼容,导致uploadVideo使用压缩路径上传失败。

bug描述:
uni.chooseVideo默认压缩后返回文件路径缺少“file://”,没有做以前版本的兼容,导致uploadVideo使用压缩路径上传失败。在官方api文档里也没更新compressed支持app端

更多关于uni-app uni.chooseVideo默认压缩后返回文件路径缺少“file://”,未做以前版本兼容,导致uploadVideo路径上传失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app uni.chooseVideo默认压缩后返回文件路径缺少“file://”,未做以前版本兼容,导致uploadVideo路径上传失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个已知的兼容性问题。在HBuilderX 3.1.11版本中,uni.chooseVideo压缩后返回的文件路径确实缺少"file://"前缀,导致uni.uploadFile无法正确识别文件路径。

临时解决方案:

  1. 手动添加"file://"前缀:
uni.chooseVideo({
  compressed: true,
  success: (res) => {
    let tempFilePath = res.tempFilePath
    if(!tempFilePath.startsWith('file://')) {
      tempFilePath = 'file://' + tempFilePath
    }
    // 使用处理后的路径进行上传
    uni.uploadFile({
      filePath: tempFilePath,
      // ...其他参数
    })
  }
})
  1. 或者使用plus.io.convertLocalFileSystemURL方法转换路径:
if(plus.os.name === 'Android') {
  tempFilePath = plus.io.convertLocalFileSystemURL(tempFilePath)
}
回到顶部