IT小哥
IT小哥
  • 发布:2021-12-27 16:40
  • 更新:2021-12-28 11:48
  • 阅读:381

【报Bug】视频和图片压缩API(compressVideo,compressImage)返回含中文的临时路径时,plus.io调取路径报错

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.3.3

手机系统: Android

手机系统版本号: Android 11

手机厂商: 小米

手机机型: k40

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

实例如下:

  • compressImage() 返回原始文件名路径,如 _doc/.../中文.jpg
  • compressVideo() 返回 encodeURI 后的文件路径,如: file:///storage/.../%E4%B8%AD%E6%96%87.mp4

操作步骤:
uni.compressVideo({  
    src: path,  
    bitrate: bitrate,  
    fps: fps,  
    resolution: resolution,  
    success: (res) => {  
        plus.io.resolveLocalFileSystemURL(res.tempFilePath,(fileEntry)=>{});  
    }  
})

预期结果:

plus.io.resolveLocalFileSystemURL可以正常解析路径

实际结果:

plus.io.resolveLocalFileSystemURL未能解析路径,报错“路径不存在”

bug描述:

压缩包含中文路径的图片和视频时存在如下两个不统一:

  1. 格式不同,image返回本地URL路径,video返回file://的绝对路径
  2. 路径编码不同,image返回未经过编码的路径,video返回经过encodeURI的路径

如上问题,就会导致 compressVideo时返回的 encodeURI 的路径,再使用plus 的 resolveLocalFileSystemURL 方法报错 路径不存在

2021-12-27 16:40 负责人:无 分享
已邀请:
FullStack

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866

decodeURIComponent 试试看

  • IT小哥 (作者)

    是的compressVideo需要decode,但是compressImage就不用。我觉得这两个类似的API应该格式统一。

    2021-12-28 16:54

FullStack

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866

你压缩成功之后,去手机的 文件存储 里看这个文件存不存在

  • IT小哥 (作者)

    存在,看截图需要把带中文的路径,decodeURI后才能使用plus.io.resolveLocalFileSystemURL(decodeURI(res.temFilePath));

    2021-12-28 16:53

  • FullStack

    回复 IT小哥: 我理解错了,以后你decodeURI之后,不能使用呢

    2021-12-28 17:55

该问题目前已经被锁定, 无法添加新回复