废话不多说直接上代码吧

之前搜了一大堆有的没的,最终还是小伙伴巴拉文档一起找到的方案(离不开小伙伴的帮助,自己总容易陷入死局,在此鸣谢 疾风李青!);

想起个事:一定要给这些路径的域名配到相应的开发管理上,其他平台不过多赘述了

首先是预览,由于我这里是uni-app框架开发三端,所以展示内容开头以uni为主:
如果你的dpf是链接形式 形如:https:// ,那么下面方案适合你(该方案,是小程序中的window.open的实现。)

支付宝不同机型 调用uni.downloadFile 发现会发现有多种形式的文件路径,因此条件编译一下(纯他么坑爹)

const times = new Date().getTime();
let userPath = '';
// #ifdef MP-ALIPAY
userPath = my.env.USER_DATA_PATH;
// #endif
// #ifdef MP-WEIXIN
userPath = wx.env.USER_DATA_PATH;
// #endif
// #ifdef MP-BAIDU
userPath = swan.env.USER_DATA_PATH;
// #endiflet filePath = userPath + '/' + times + '.pdf';export default (url) => {uni.downloadFile({ // 下载url, // 服务器上的pdf地址filePath,success: (res) => {let openDocumentPath = filePath;// #ifdef MP-ALIPAYopenDocumentPath = res.tempFilePath || res.filePath || filePath;// #endifuni.openDocument({fileType: 'pdf',showMenu: true,filePath: openDocumentPath,success: () => {console.log('打开PDF成功')},fail: (err) => {uni.showToast({title: '打开文档失败,请重试!'})}})}})
}

如果你的链接是base64,那么这个方案适合你

const times = new Date().getTime();
let userPath = '';
// #ifdef MP-ALIPAY
userPath = my.env.USER_DATA_PATH;
// #endif
// #ifdef MP-WEIXIN
userPath = wx.env.USER_DATA_PATH;
// #endif
// #ifdef MP-BAIDU
userPath = swan.env.USER_DATA_PATH;
// #endiflet filePath = userPath + '/' + times + '.pdf';export default (data) => {const fileSystemManager = uni.getFileSystemManager(); fileSystemManager.writeFile({//保存本地临时路径filePath,data,encoding: 'base64',success: (res) => {uni.openDocument({fileType: 'pdf',showMenu: true,filePath,success: function (res) {console.log('打开PDF成功')},fail(err) {uni.showToast({title: '打开文档失败,请重试!'})}})}})
}

总结:
主要思路还是通过不同的api将文件先下载到小程序存储,通过uni.openDocument去打开,

  1. 配置相应服务器域名。
  2. 使用对应小程序api预览。

下载:
仅微信安卓端可实现,
uni.openDocument 打开 showMenu: true,
其实就是微信预览的时候,开启menu,通过右上角的三个点点击后保存到手机。

看到其他大牛给到的方案,都不是很完美,贴个链接吧。

微信小程序下载文件,保存文件功能总结

  1. 通过base64或pdf链接 转 png后,再fileSystemManager.saveFile API保存文件为图片格式;
    下载,完事让用户自己改后缀。

  2. 先使用下载文件api把文件下载下来,再使用wx.openDocument() 打开文件里面加上showMenu字段,然后就可以看到在打开的文件右上角出现了,
    ​ ios表现:ios点击之后会有发送给朋友的选项,选择分享给朋友之后就可以把文件直接发送给对方了,然后你就可以在聊天记录里面拿到这个文件;

这两种方式 都不是很完美,所以 小程序端暂时不建议提供下载功能,
除非给个链接 让用户沾出去从浏览器下载。

uni-app 微信小程序 支付宝小程序(alipay) 百度小程序(baidu),预览pdf(链接和base64) 及下载(仅微信),window.open uni.downloadFile相关推荐

  1. 1000套微信小程序源码源代码带后台带运行截图预览图学习资料网盘下载

    1000多套微信小程序源码带后台+教程+不同行业的源码集合 o2o行业 | - 盒马鲜生 | - 轻客洗衣 互联网行业 | - 云文档 | - 仿ofo共享单车 | - 仿美团外卖 | - 仿饿了么 ...

  2. uni-app 微信小程序使用 web-view 预览PDF

    1.使用uni-pp开发微信小程序,上线之后发现Android手机无法加载览PDF,但ios可以.这里运用了 uni.openDocument <template><view cla ...

  3. 小程序 图片上传php后台,微信小程序图片选择、上传到服务器、预览(PHP)实现实例...

    微信小程序图片选择.上传到服务器.预览(php)实现实例 小程序实现选择图片.预览图片.上传到开发者服务器上 后台使用的tp3.2 图片上传 请求时候的header参考时可以去掉(个人后台验证权限使用 ...

  4. php 点击选择图片上传,微信小程序图片选择、上传到服务器、预览(PHP)实现实例...

    微信小程序图片选择.上传到服务器.预览(PHP)实现实例 小程序实现选择图片.预览图片.上传到开发者服务器上 后台使用的tp3.2 图片上传 请求时候的header参考时可以去掉(个人后台验证权限使用 ...

  5. 记录一次微信小程序实现预览pdf

    微信小程序预览pdf需要注意的是,在安卓端和ios端是有差异的. 安卓端不能用web-view直接打开,需要先下载到本地,再打开文件进行预览. 网上说的ios端可以直接用web-view进行预览,但是 ...

  6. 【预览pdf】:uniapp在微信小程序预览pdf,兼容安卓/IOS

    前言 提示:因最近项目需求,项目需要用uniapp来开发微信小程序预览pdf的功能, 后端以链接形式返回pdf地址. 一.方法概述 开始用uniapp提供微信自带方法:wx.downloadFile( ...

  7. 解决uniapp开发微信小程序预览pdf文件ios\安卓兼容问题

    问题 项目需要用uniapp来开发微信小程序,其中,有一个功能是预览pdf, 后台以链接形式返回pdf地址,一开始使用web-view做链接跳转,但是出现ios文件可以正常打开,android打不开的 ...

  8. 微信小程序saveFile,openDocument方法下载、预览pdf文件不能用本地应用打开(不能另存为)的问题

    微信小程序saveFile,openDocument方法下载.预览pdf文件不能用本地应用打开(不能另存为)的问题 查看官方文档的openDocument()方法,发现加一个showMenu: tru ...

  9. 微信小程序之wx.request:fail错误,真机预览请求无效问题解决,安卓,ios网络预览异常

    微信小程序之wx.request:fail错误,真机预览请求无效问题解决,安卓,ios网络预览异常 参考文章: (1)微信小程序之wx.request:fail错误,真机预览请求无效问题解决,安卓,i ...

最新文章

  1. 【建议收藏】Spring Boot注解全梳理!
  2. 200919阶段一C++STL容器
  3. 云需要快速、可升级的存储器
  4. 【Java】while和do-while循环比较测试案例
  5. Jetty入门(1-1)Jetty入门教程
  6. 计算机专业基础 -- Linux系统相关基础知识
  7. 卷积神经网络第四周作业1 - Face Recognition for the Happy House - v1
  8. ./configure: line 4850: ` XIPH_PATH_OGG(, as_fn_error $? '
  9. 编译原理第三章词法分析知识点思维导图版
  10. tushare基本用法
  11. 酒店和餐饮企业Foodprint Group使用西门子低代码重设工作流程以缓解食物浪费问题
  12. 如何批量发送邮件?小白问百度,大神秀操作,网友惊呼:666
  13. Python爬虫爬取LOL所有英雄皮肤
  14. UWB定位的3种算法:TWR、TOA和TDOA算法
  15. ubuntu源换成清华源_Ubuntu替换国内源(清华源)
  16. 淘宝/天猫/京东/抖音和聚划算百亿补贴、预售定金直链/BP链接制作生成教程
  17. 程序员提高阅读代码能力的几个方法
  18. java关于文件的操作
  19. STM32 HAL 库0.96寸oledSSD1306 驱动
  20. API接口文档利器:Swagger

热门文章

  1. C#取一个字符串的左边或右边的n个字符
  2. ubuntu16.04 ns2安装教程
  3. 微信小程序头脑王者辅助神器
  4. 如何让table表格中td的内容自动换行
  5. 如何制作Viz Artist插件-理论篇
  6. heic图片转换成jpg格式工具
  7. JNI/NDK开发指南(二)——JVM查找java native方法的规则
  8. 连续八年包装饮用水市占率第一,这个品牌DTC是如何持续增长的?
  9. 【Grasshopper基础14】创建可在画布上自由传递的自定义类型数据(下)—— 电池与自定义IGH_Goo的交互
  10. 如何实现退出小程序?