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的文件名解析逻辑存在缺陷,没有正确处理包含多个"."的文件名情况。
临时解决方案:
- 可以在下载前对URL进行编码处理:
const encodedUrl = encodeURIComponent('http://ip:port/aaa.xx.pdf')
uni.downloadFile({
url: encodedUrl,
success: (res) => {
if (res.statusCode === 200) {
console.log('下载成功==', res);
}
}
});
- 或者在下载完成后手动重命名文件:
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');
}
}
});