狼性做事
狼性做事
  • 发布:2021-04-25 09:55
  • 更新:2023-04-21 16:46
  • 阅读:1118

【报Bug】Hbuildx3.1.11 api uni.chooseVideo 返回的绝对路径 导致Android端真机运行上传视频失败!

分类:HBuilderX

产品分类: HbuilderX

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX版本号: 3.1.11

操作步骤:

Hbuildx3.1.11 api uni.chooseVideo 返回tempFilePath 为绝对路径 如:/storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/temp/compress_video_6848098.mp4
然而此时 调用 uni.uploadFile 直接将上面返回的tempFilePath 放置在filePath 中Android端上传视频失败!(h5端可以上传成功)

预期结果:

Hbuildx3.1.11 保持与Hbuildx3.1.9 一样

实际结果:

Hbuildx3.1.11 保持与Hbuildx3.1.9 一样

bug描述:

Hbuildx3.1.9 api uni.chooseVideo 返回tempFilePath 为相对路径 如:_doc/uniapp_temp_1619314755231/camera/1619314886586.mp4
此时 调用 uni.uploadFile 直接将上面返回的tempFilePath 放置在filePath 中是可以直接上传视频成功!(Android,h5端均可以上传成功)

Hbuildx3.1.11 api uni.chooseVideo 返回tempFilePath 为绝对路径 如:/storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/temp/compress_video_6848098.mp4
然而此时 调用 uni.uploadFile 直接将上面返回的tempFilePath 放置在filePath 中Android端真机运行上传视频失败!(h5端可以上传成功)

请在Android端真机运行!!望尽快答复!!

2021-04-25 09:55 负责人:DCloud_UNI_GSQ 分享
已邀请:

最佳回复

DCloud_UNI_GSQ

DCloud_UNI_GSQ

问题确认,已加分,即将修复

真机出现问题的可以重新打包自定义基座尝试。

或者采用临时解决方案:启用压缩,判断返回路径为绝对路径时拼接 'file://'

uni.chooseVideo({  
    compressed: true,  
    success(res) {  
        const tempFilePath = (res.tempFilePath.startsWith('/') ? 'file://' : '')   res.tempFilePath  
        // ...  
    }  
})
狼性做事

狼性做事 (作者) - 奔向远方

麻烦官方尽快确认下

DCloud_Android_ST

DCloud_Android_ST

先关闭视频压缩

  • 狼性做事 (作者)

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

    2021-04-25 11:24

  • 狼性做事 (作者)

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

    2021-04-25 11:36

  • DCloud_Android_ST

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

    2021-04-25 11:39

  • 狼性做事 (作者)

    回复 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)


                        let videoFile = res.tempFilePath;  
    console.log('视频路径----',videoFile)

    let token = uni.getStorageSync("token") || '';
    _this.loading.loadModal = true;
    uni.uploadFile({
    url: config.base_url + "/file/upload",
    filePath: videoFile,
    name: "file", // 一定要与后台@RequestParam("file") MultipartFile变量名一致
    header: {
    "Authorization": "Bearer " + token,
    },
    dataType: "json",
    success(res) {
    console.log(res)
    _this.loading.loadModal = false;
    let list = res.data;
    let item = JSON.parse(list)
    console.log(item)
    if (item.code == 200) {
    _this.videoList.push(item.data)
    console.log(_this.videoList)
    } else {
    _this.$showModal('上传视频失败', item.msg)
    }

    }
    });
    },
    fail: function(res) {
    console.log('fail---视频------',res)
    }

    });

    2021-04-25 13:36

  • 狼性做事 (作者)

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

    2021-04-25 13:37

  • 狼性做事 (作者)

    回复 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 请问有好的解决办法吗?我们需要压缩这个功能

    2021-04-26 14:08

  • 狼性做事 (作者)

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

    2021-04-26 14:10

  • 狼性做事 (作者)

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

    2021-04-26 14:12

狼性做事

狼性做事 (作者) - 奔向远方

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

  • 7***@qq.com

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

    2021-04-27 15:06

5***@qq.com

5***@qq.com - 古木

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

DCloud_UNI_GSQ

DCloud_UNI_GSQ

HBuilderX 3.1.12 已修复

  • 5***@qq.com

    这个问题在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,也是一样的,错误说用户取消,可是没有取消啊,是真机调试的

    2022-04-06 18:05

  • 5***@qq.com

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

    2022-04-06 18:12

  • DCloud_UNI_GSQ

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

    2022-04-07 21:04

9***@qq.com

9***@qq.com - 全栈开发

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

要回复问题请先登录注册