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

pdf这类的文件只能通过wx.openDocument预览的时候开启右上角转发或者引导用户复制下载链接用浏览器打开来下载。

按官方的说法下载的本地文件分三类链接地址

这里选择的是pdf下载下来让用户预览的时候自己选择是否转发保存出来。
一开始我参考了百度的方法通过 wx.downloadFile 下载临时文件wx.saveFile(Object object)保存成本地缓存文件最后wx.openDocument打开预览。但是这里我注意到一个坑官方的文档说明wx.saveFile(Object object)只能存10M

而且wx.openDocument转发的pdf文件会丢失pdf后缀直接打不开

排查了半天好像是wx.downloadFile临时文件的原因。咨询社区的方案wx.downloadFile使用fath参数将文件输出改成自定义的文件名加后缀。

//查看并下载
See_download() {wx.downloadFile({//下载url: url,//服务器上的pdf地址filePath: wx.env.USER_DATA_PATH + '/test.pdf',//自定义文件地址success: function (res) {var filePath = res.filePathwx.openDocument({//打开filePath: filePath,success: function (res) {}})}})
}

成功是成功了,但是wx.saveFile保存的时候报错而用wx.getSavedFileList找不到文件在哪?后续多了内存溢出怎么办?
经过一番我注意到

原来这路径实际已经保存到本地用户文件里了。直接省去wx.saveFile这一步。只要通过.readdir删除就可以了

// 删除本地文件deletContract() {try {let file = wx.getFileSystemManager();file.readdir({dirPath: `${wx.env.USER_DATA_PATH}`,success: res => {console.log(res);if (res.files.length > 2) {file.unlink({filePath: `${wx.env.USER_DATA_PATH}/${res.files[0]}`,complete: res => {}})}}})} catch (error) {}},

最后代码

let that = this;const fileExtName = ".pdf";const randfile = new Date().getTime() + fileExtName;const newPath = `${wx.env.USER_DATA_PATH}/${randfile}`;that.deletContract();wx.downloadFile({url: 下载pdf的链接url,filePath: newPath,success: function (res) {const filePath = res.tempFilePath;wx.openDocument({filePath: newPath,showMenu: true,fileType: 'pdf',success: function (res) {}})},fail: function (res) {wx.hideLoading();}})

小程序wx.downloadFile下载pdf并保存相关推荐

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

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

  2. 微信小程序wx.downloadFile()使用体验

    微信小程序wx.downloadFile()使用体验 想给单位做一个小程序,实现模板文件下载的功能,方便办事群众把文件下载到手机上自行打印填写,也能提高办事效率. 不过想法是好的,截止目前2018年1 ...

  3. 微信小程序wx.downloadFile苹果手机失败显示 file data is empty的解决方案

    Android和微信开发者工具使用downloadFile正常,但ios系统上却失败了. 经过多次测试,发现原来是上传的文件里面内容为空,所以才会fail 所以只要改下,文件大小大于0KB就ok了,d ...

  4. QQ小程序百度网盘中的文件保存和下载

    别人用QQ百度网盘小程序分享的文件不能直接保存到自己的网盘的,如果文件较小,可以打开之后保存,但是如果文件很大,有视频的话,点击视频,弹出一个复制链接的窗口,然后复制链接到自己百度网盘内打开就好了. ...

  5. base64 pdf解码无法打开_微信小程序使用echarts导出PDF

    百度一搜,发现都在用echarts-for-weixin,demo运行,效果不错. 开始往项目里集成,集成完毕,兴高采烈真机测试一下吧,小程序代码限制1024k,echarts包太大(700多k),去 ...

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

    这两天遇到一个需求,将统计数据生成的excel表在小程序中下载. 第一次在小程序中碰到下载的需求,一开始想像之前做公众号h5页面一样的方法直接用a标签下载附件,后来想起来小程序不支持a标签. 查了一下 ...

  7. 微信小程序Excel生成下载浏览分享

    微信小程序Excel生成下载浏览分享 完整流程 遇到的小问题 完整流程 主要是为了实现小程序前端从后端下载excel文件并浏览和分享excel文件给其他用户 主要实现步骤:通过后端返回的字节流 : w ...

  8. 微信小程序wx.request接口

    微信小程序wx.request接口 wx.request是小程序客户端与服务器端交互的接口 HTTPS 请求 一个微信小程序,只能同时(同时不能大于5个)有5个网络请求 wx.request(OBJE ...

  9. 微信小程序--多张图片下载问题--for循环出现 漏下,乱序。最多下载5张图片的问题解决(附带个人开发小程序源码)

    微信小程序多图下载,之前肯定对单张图片下载了解了.这里就不再多说. 首先,多图下载肯定是用到循环了.那么问题就出在循环这里.在循环里调用单图下载方法.这样就会出现一个问题,就是下载时先遍历完了,然后再 ...

最新文章

  1. spring和CXF集成来实现webservices
  2. 第五十四天 how can I 坚持
  3. STM32使用SPI通信驱动2.4G无线射频模块发送数据
  4. 【电路补习笔记】6、MOS管的参数与选型
  5. 深入MTK平台bootloader启动分析笔记
  6. linux的find命令满屏权限不够提示
  7. Laravel框架性能优化
  8. linux system V IPC 信号灯和共享内存实例
  9. python提取图片中的曲线_如何从fits图像中提取点扩散函数?
  10. 【案例分析】PCB行业产业服务平台开发案例分析
  11. 精益研发管理-培训感想
  12. s3c6410裸机调试方式总结
  13. Veil-Evasion免杀
  14. 企业上云的选择及好处
  15. 2021年网易云音乐实时计算平台发展和挑战
  16. 赠书 | 四大通证类型:价值创新的源头
  17. ubuntu 安装zoom
  18. C语言初学基础篇:No such file or directory 报错 ( C-Free 5 软件使用 )
  19. 【笔记】html 图片映射 usemap(vue环境下、map、area、coords)
  20. 互联网账户系统如何设计(上篇)

热门文章

  1. 上报下单行为 腾讯广告 微信 公众号 PHP
  2. Java的在哪里找labor_LaborDay哪里玩
  3. 弓形锯床主传动及工作机构设计
  4. 计算机网络的三种交换方式
  5. 选址|如何开一家咖啡店?店铺租金多少合适?
  6. 搜图出处的软件_以图搜图搜gif图片出处来源的懒人小工具
  7. 不懂APS系统?十个问答让你瞬间了解APS高级计划与排程系统
  8. IP问问区县级别IP地址库---使用帮助(上篇)
  9. 没有人能扼杀掉你的梦想
  10. 怎么在线把pdf文件合并