这两天遇到一个需求,将统计数据生成的excel表在小程序中下载。

第一次在小程序中碰到下载的需求,一开始想像之前做公众号h5页面一样的方法直接用a标签下载附件,后来想起来小程序不支持a标签。

查了一下微信里面下载附件的,是用wx.downLoadFile来实现的。实际操作以后,发现下载下来的附件,文件名是一长串奇怪的英文,并不是像想象中一样可以自定义。这样如果用户保存之后想要找到这个文件,但是下载的文件太多了,名字又都是乱码,一方面不好找,另一方面看起来很乱。但是查看文档之后发现wx.downLoadFile中并没有用来记录文件名的参数,因此想到先运用wx.saveFile将临时文件保存下来,再修改文件名。

附文档地址:
微信小程序开发文档 - wx.downLoadFile
微信小程序开发文档 - wx.saveFile

这里运用FileSystemManager.rename,将文件名修改为自己想要的名字,即可解决问题。

注意,在使用之前要先获取全局唯一的文件管理器,即:
const FileSystemManager = wx.getFileSystemManager();
否则会报错FileSystemManager is not defined。

这里还有几个坑。

首先是,FileSystemManager.rename在使用时,报错fail permission denied。查了一下,需要在目标文件名前加上wx.env.USER_DATA_PATH,即:“newPath: wx.env.USER_DATA_PATH + ‘/1.png’”。其中,1.png是我的新文件名和后缀。

修改后,继续报错,原来是我路径写错了,我在文件名前面少了一个“/”符号,即:(上面的路径为了不误导,用的是正确的,请大家自行检查自己的路径是否有错误)

我的错误的路径‘newPath: wx.env.USER_DATA_PATH + ‘1.png’’

正确的路径‘newPath: wx.env.USER_DATA_PATH + ‘/1.png’’

一定要细心。

这样重命名后即可解决问题。

但我在回归测试的时候又遇到了一个问题,还是FileSystemManager.rename方法,报错rename: fail

既然是回归测试出了问题,说明第一次是可行的。

检查了半天代码,后来想到,我下载的是同一份文件,重命名时命名也是同一个名字,重名了,所以重命名失败。

这里errMsg里面是不会写清楚具体原因的,只有一个fail。所以要仔细查看自己的代码,看看问题具体出在了哪里。

找到问题就好办了。只要在重命名失败的方法里,将之前下载的文件删掉,重新再给新的文件命名就可以了。这里最好先用FileSystemManager.getFileInfo找一下这个重复的名字,找到了再调FileSystemManager.removeSavedFile进行删除,防止找不到或者删错了等情况发生。

因为这几个方法请求回调都很简单,全部都是小程序开发文档里的内容,就不另外贴项目代码了。没明白可以去小程序开发文档查询对应使用方法或询问我。

附文档地址:
微信小程序开发文档 - getFileSystemManager
微信小程序开发文档 - FileSystemManager

解决调用wx.downLoadFile下载的文件名乱码(长串英文字符)问题相关推荐

  1. 小程序wx.downloadFile下载pdf并保存

    查了很多资料,小程wx.downloadFile(Object object)下载的pdf文件只能保存在小程序的文件目录内(藏得很深用户一般找不到),跟随小程序的删除而被清理. 图片和视频倒是可以通过 ...

  2. 微信小程序wx.downloadFile下载图片(甄姬)出现格式.unknown的bug

    微信小程序调用api wx.downloadFile下载图片(甄姬),有时候会出现格式.unknown的bug 针对这个问题我们可以通过自定义图片名称,并且传入filePath指定文件下载后存储的路径 ...

  3. response setHeader 设置下载中文文件名乱码问题

    1. HTTP消息头 (1)通用信息头 即能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头,如Data,Pragma 主要: Cache-Control , Connecti ...

  4. response.setHeader()设置下载中文文件名乱码问题

    1. HTTP消息头 (1)通用信息头 即能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头,如Data,Pragma 主要: Cache-Control , Connecti ...

  5. 【转】解决长串英文字母显示不能自动换行的问题和td中汉字自动换行 CSS强制不换行

    解决长串英文字母显示不能自动换行的问题和td中汉字自动换行 && CSS强制不换行 例如:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa不 ...

  6. 解决Edge浏览器下载文件文件名乱码问题

    文件名中含有中文的文件下载,用谷歌.火狐.搜狗等浏览器都可以正常下载,但使用Windows自带的edge浏览器下载时文件名出现乱码问题.如下: 解决方案: 在输出头中的文件名进行urlencode编码 ...

  7. 解决火狐浏览器下载文件文件名乱码的问题

    第一种解决方案: if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {//IE内 ...

  8. 使用EasyExcel下载,文件名乱码问题处理

    使用阿里EasyExcel下载excle的简单样例记录,包含前后端核心代码,主要记录中文文件名称乱码问题的处理. EasyExcle的使用不再多做记录,EasyExcel教程-阿里云开发者社区 (al ...

  9. safari下载中文文件名乱码

    原因:响应头设置content-disposition,主要遵循 RFC 5987标准. response.setHeader("content-disposition",&quo ...

最新文章

  1. 警方披露Uber撞人案细节,解密Uber自动驾驶系统
  2. iOS环信3.1·集成·功能的实现
  3. php web目录结构,目录结构
  4. ipsec_over_gre
  5. csc interview at cambridge
  6. 网上图书商城项目学习笔记-035工具类之JdbcUtils及TxQueryRunner及C3P0配置
  7. python画太极八卦图_太极八卦图的正确画法
  8. 源码角度,分析@Transactional实现原理
  9. 关于小白(我)理解Spring的一些注解
  10. localStorage、cookie
  11. 现网问题排查实战:Jstat,Jstack,Jmap
  12. java 非模态_统计图钻取的明细报表在非模态窗口中显示
  13. Python3 批量创建文件、修改文件名及回滚操作
  14. 【论文笔记】Recover Canonical-View Faces in the Wild with Deep Neural Network
  15. 车载通信——CAN通信诊断协议
  16. 用友u8安装应用服务器输什么,用友u8服务器安装教程
  17. javaweb-39:文件上传及拓展鸡汤
  18. postman-批量导入数据
  19. 阿里云服务器远程连接和v2ray
  20. 《Cisco防火墙》一6.5 虚拟防火墙的管理访问

热门文章

  1. 【转】似大地水准面精化
  2. 图像处理学习笔记2.0
  3. [生存志] 第79节 国语述诸国
  4. HTML5+CSS3期末大作业——城市简介
  5. 【OpenCV】图片几何特征提取
  6. 狼的处世十大哲理(想养狼的人必应)
  7. vscode开发中绝对让你惊艳的插件!!!(个人在用) 持续更新。。。。
  8. linux mysql 邮件_linux中mysql 自动备份发邮件 到指定邮箱代码
  9. 虚拟机与宿主机之间的网络共享问题
  10. UE4 Decal实现简介