易软
易软
  • 发布:2024-05-16 10:57
  • 更新:2025-02-22 13:28
  • 阅读:608

【报Bug】使用uni.downloadFile()方法下载附件附件名包含#等字符的时候如果附件是PNG下载是bin文件无法查看

分类:uni-app

产品分类: 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

示例代码:
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);  
                       }  
                });  
               ....  
       }  
 });

操作步骤:

正常的下载点击

预期结果:

能正常下载并查看

实际结果:

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"
}

2024-05-16 10:57 负责人:DCloud_App_Array 分享
已邀请:
2***@qq.com

2***@qq.com

同样问题,请是否有解决办法

要回复问题请先登录注册