uni.downloadFile({
header:header,
url: url,
success: res => {
console.log(res);
if(res.statusCode != 200) return
uni.showToast({icon:"none",title: '下载成功'});
uni.saveFile({
tempFilePath: res.tempFilePath,
success:(res)=>{
fileData.path = res.savedFilePath;
console.log(res.savedFilePath);
}
});
....
}
});

- 发布:2024-05-16 10:57
- 更新:2025-02-22 13:28
- 阅读:608
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: windows11
HBuilderX类型: 正式
HBuilderX版本号: 3.8.7
手机系统: Android
手机系统版本号: Android 12
手机厂商: 华为
手机机型: 荣耀70 及荣耀手机
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
App下载地址或H5⽹址: 各大市场 易软云 http://system.es-it.cn/wap/yiruanyun.html
示例代码:
操作步骤:
正常的下载点击
正常的下载点击
预期结果:
能正常下载并查看
能正常下载并查看
实际结果:
png等图片无法查看
png等图片无法查看
bug描述:
在使用uni.downloadFile 发现在下载包含#的文件名的png文件的时候,下载后直接将名称切断了,并且无法展示
比如 文件名为 “你好#你好.png” 下载地址为
http://xxxx/esdownload/employee/img/origin/1789834995055525889-你好#你好.png?token=QmVhcmVyIGM3MDc0ZDkyLWM1ZjYtNDYyYi1iMmJmLWRiYjM5ZGZhZjNkNw==
如果不将名称进行编码那么会出现下载不了 所以我将 # 进行了encode 编码 改成了
http://xxxx/esdownload/employee/img/origin/1789834995055525889-你好%23你好.png?token=QmVhcmVyIGM3MDc0ZDkyLWM1ZjYtNDYyYi1iMmJmLWRiYjM5ZGZhZjNkNw==
可以进行下载
但是 打印downloadFile 的success 的res 发现下载下来是这样的 正常的应该不是
1789834995055525889-你好#你好.png 这样吗
结果是这样的:
{
"tempFilePath": "_doc/uniapp_temp_1715570209249/download/1789834995055525889-你好.bin",
"statusCode": 200,
"errMsg": "downloadFile:ok"
}
我又将整个url 进行了 encode 编码还是一样,请问这个方法是不允许下载链接有# = 号这些吗?
但是 如果是txt doc 即使下载是上述的 也能打开 只有图片不行
相关的log返回
图片的信息
下载地址
http://xxx/esdownload/employee/img/origin/1789834995055525889-阿斯顿发%23按到.png?token=QmVhcmVyIDU2ZWRjOWExLWNhMzItNDRmYS1iZGMyLTQ3MWJlZWFmZTE0Yw==
{
"id": "1789834995055525889-阿斯顿发%23按到.png",
"switcher": "off",
"showProcess": true,
"process": 0,
"isDownload": false,
"fileName": "阿斯顿发#按到.png",
"path": "",
"fldSavePath": "1789834995055525889-阿斯顿发%23按到.png",
"fldUploadType": "employee",
"extension": "png",
"icon": "Imger",
"iconColor": "rgb(179, 235, 224)"
}
文本的数据信息
下载地址
http://xxx/esdownload/employee/doc/1789852094436016129-阿道夫%23地方.txt?token=QmVhcmVyIDU2ZWRjOWExLWNhMzItNDRmYS1iZGMyLTQ3MWJlZWFmZTE0Yw==
{
"id": "1789852094436016129-阿道夫%23地方.txt",
"switcher": "off",
"showProcess": true,
"process": 0,
"isDownload": false,
"fileName": "阿道夫#地方.txt",
"path": "",
"fldSavePath": "1789852094436016129-阿道夫%23地方.txt",
"fldUploadType": "employee",
"extension": "txt",
"icon": "text",
"iconColor": "#BDC3C7"
}
下载downloadFile 的success 返回的值
{
"tempFilePath": "_doc/uniapp_temp_1715826189626/download/1789834995055525889-阿斯顿发.bin",
"statusCode": 200,
"errMsg": "downloadFile:ok"
}
{
"tempFilePath": "_doc/uniapp_temp_1715826189626/download/1789852094436016129-阿道夫.bin",
"statusCode": 200,
"errMsg": "downloadFile:ok"
}
text 能打开
正常的是
下载地址
http://xxxx/esdownload/employee/img/origin/1789836718960607233-111.png?token=QmVhcmVyIDU2ZWRjOWExLWNhMzItNDRmYS1iZGMyLTQ3MWJlZWFmZTE0Yw==
{
"id": "1789836718960607233-111.png",
"switcher": "off",
"showProcess": false,
"process": 0,
"isDownload": false,
"fileName": "111.png",
"path": "",
"fldSavePath": "1789836718960607233-111.png",
"fldUploadType": "employee",
"extension": "png",
"icon": "Imger",
"iconColor": "rgb(179, 235, 224)"
}
下载的log
{
"tempFilePath": "_doc/uniapp_temp_1715826189626/download/1789836718960607233-111.png",
"statusCode": 200,
"errMsg": "downloadFile:ok"
}
1 个回复
2***@qq.com
同样问题,请是否有解决办法