HarmonyOS Next环境uni-app uni.downloadFile下载文件名称后缀错误问题

HarmonyOS Next环境uni-app uni.downloadFile下载文件名称后缀错误问题

类别 信息
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本 win11
HBuilderX类型 正式
HBuilderX版本 4.57
手机系统 HarmonyOS NEXT
手机系统版本 HarmonyOS NEXT Developer Beta2
手机厂商 华为
手机机型 xx
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

示例代码:

uni.downloadFile({
url: 'http://ip:port/aaa.xx.pdf',
success: (res) => {
if (res.statusCode === 200) {
console.log('下载成功==', res);
}
}
});

操作步骤:

  • 只要文件名中存在多个.就有问题

预期结果:

  • 应该取到正确的后缀名

实际结果:

  • 未取到正确的后缀名

bug描述:

当调用传入的地址是http://ip:port/aaa.xx.pdf,即文件名称中有多个.时,下载的文件名称不对,文件名变成以xx为后缀了。


更多关于HarmonyOS Next环境uni-app uni.downloadFile下载文件名称后缀错误问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS Next环境uni-app uni.downloadFile下载文件名称后缀错误问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个在HarmonyOS NEXT环境下uni.downloadFile的文件名解析问题。当URL中包含多个"."时,系统错误地截取了中间部分作为文件后缀。

问题原因可能是HarmonyOS NEXT的文件下载模块对URL的文件名解析逻辑存在缺陷,没有正确处理包含多个"."的文件名情况。

临时解决方案:

  1. 可以在下载前对URL进行编码处理:
const encodedUrl = encodeURIComponent('http://ip:port/aaa.xx.pdf')
uni.downloadFile({
  url: encodedUrl,
  success: (res) => {
    if (res.statusCode === 200) {
      console.log('下载成功==', res);
    }
  }
});
  1. 或者在下载完成后手动重命名文件:
uni.downloadFile({
  url: 'http://ip:port/aaa.xx.pdf',
  success: (res) => {
    if (res.statusCode === 200) {
      const fs = uni.getFileSystemManager();
      fs.renameSync(res.tempFilePath, res.tempFilePath + '.pdf');
    }
  }
});
回到顶部