微信小程序预览 word、excel、ppt、pdf 等文件_RealizeInnerSelf丶的博客-程序员秘密

技术标签: vue  linux  小程序  nodejs  javascript  

微信小程序预览 word、excel、ppt、pdf 等文件

预览效果

前言

微信官方提供了相关的 API 来预览常见文件,目前支持如下格式的文件

总结一下就是先用 wx.downloadFile API 把文件下载下来,再用 wx.openDocument API 把它打开

注意点

wx.downloadFile API 单次下载允许的最大文件为 200MB

需要在小程序后台配置 downloadFile 合法域名才能下载文件

实现代码

以预览 PDF 文件为例

  • 下载文件需要一个等待过程,所以加上加载提示很有必要
const util = require('../../utils/util') // 引入封装过的加载提示

Page({
    // 预览文件
    previewFile(fileLink) {
        if(!fileLink) {
            return false
        }
        util.showLoading()
      
        // 单次下载允许的最大文件为 200MB
        wx.downloadFile({
            url: fileLink, // 地址已打码,自己换个其他的地址("https://www.xxxxx.com/file/测试通知.pdf")
            success: function (res) {
                console.log(res, "wx.downloadFile success res")
                if(res.statusCode != 200) {
                    util.hideLoadingWithErrorTips()
                    return false
                }
                var Path = res.tempFilePath //返回的文件临时地址,用于后面打开本地预览所用
                wx.openDocument({
                    filePath: Path,
                    showMenu: true,
                    success: function (res) {
                        console.log('打开成功');
                        util.hideLoading()
                    }
                })
            },
            fail: function (err) {
                console.log(err, "wx.downloadFile fail err");
                util.hideLoadingWithErrorTips()
            }
        })
      
    }
})

util.js

/* 加载动画相关 */
const showLoading = (tips = '加载中...') => {
  wx.showNavigationBarLoading()
  wx.showLoading({
    title: tips,
  })
}

const hideLoading = () => {
  wx.hideLoading()
  wx.hideNavigationBarLoading()
}

const hideLoadingWithErrorTips = (err = '加载失败...') => {
  hideLoading()
  wx.showToast({
    title: err,
    icon: 'error',
    duration: 2000
  })
}

module.exports = {
  showLoading: showLoading,
  hideLoading: hideLoading,
  hideLoadingWithErrorTips: hideLoadingWithErrorTips,
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37177115/article/details/120009034

智能推荐

字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()_dengdun6257的博客-程序员秘密

1. 字符设备结构体 内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。该散列表中的每一个元素是一个 char_device_struct 结构,它的定义如下: static struct char_device_struct { struct char_device_struct *next; // 指向散列冲突链表中的下一个元素的指...

咕咚APP产品体验报告_咕咚app的缺点_产品狐的博客-程序员秘密

1概况1.1产品基本情况:产品名称:咕咚系统平台:IOS产品版本:8.40.1产品大小:155.3MB相关产品:KEEP,悦跑圈1.2产品体验环境:设备机型:iphone6 Plus设备系统:Ios12.1.4网络环境:4G体验场景:户外体验角色:普通跑者1.3咕咚的基本情况:目前咕咚已经先后完成5轮融资,累计融资额近1.2亿美金2010年成都乐动信息技术有限公司正式...

android读写usb,Android: OTG+USB读取数据_馅饼在哪里的博客-程序员秘密

需求:* 通过otg线使手机连接u盘,并获取到u盘的文件信息manifest注册权限android:name="android.hardware.usb.host"/>mainfest 静态注册页面,在mainactivity中配置属性android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"android:resource=...

第六章 输入输出系统_huyao_road的博客-程序员秘密

一、简答题:1.有几种I/O控制方式?各有何持点?(1)、循环测试 I/O方式(轮询方式)利用I/O测试指令测试设备的闲忙。若设备不忙,则执行输入或输出指令;若设备忙,则I/O测试指令不断对该设备进行测试,直到设备空闲为止。这种方式使CPU花费很多时间在I/O是否完成的循环测试中,造成极大的浪费。(2)、中断处理方式引入中断之后,每当设备完成I/O操作,便以中断请求方式通知CP...

数据结构学习(五)双向链表和栈的初学_PayYingJAY的博客-程序员秘密

一、双向链表1.1简介双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。1.2特点每次在插入或删除某个节点时, 需要处理四个节点的引用, 而不是两个. 实现起来要困难一些。 相对于单向链表, 必然占用内存空间更大一些。 既可以从头遍历到尾, 又可以从尾遍历到头。简图如下:从上中可以看到,双向链表中各节点包含以下 3 部分信息:.

Android序列化Parcelable、Serializable_Stephen2Wong的博客-程序员秘密

在Android中序列化实体类的方法有两种:一:Serializable优点:此方法特别简单,只需直接在实体类上声明Serializable接口缺点:效率没有Parcelable高二:Parcelable,优点:序列化及反序列号效率高   缺点:当数据将会被缓存进内存中的时候不建议这么做,容易导致数据丢失

随便推点

中国的程序员只能支撑到30岁么_袁红岗离职_duhaomin的博客-程序员秘密

原文地址:http://www.cnblogs.com/stay/archive/2011/08/17/2141734.html2011年7月,仅仅47岁的“中国第一程序员”求伯君彻底退隐江湖。这代表着一个时代的过去,在求伯君风光的年代,程序员身上充满着个人英雄主义 的浪漫情怀。而随着时间的不断推移,单个程序员的能力显得越来越渺小,程序员逐渐沦为软件生产流水线上一颗螺丝钉,这让

没踩过的STM32 HAL库的那些坑_小肥侠123的博客-程序员秘密

一.前言STM32 hal库很好用,但是也有一些坑,这里把网上网友遇到的各种坑预先记录一下,方便自己和各位小伙伴避避坑。二.那些没踩过的坑1.无法使用CMSIS-DAP下载器或者JTAG下载器给单片机烧录程序产生这个原因是因为STM32 cubeMX生成的工程里默认没有配置DAT下载器或者JTAG下载器所使用到的SWDIO引脚和SWCLK引脚,因此造成无法下载程序,解决办法也很简单,在使用...

ESP32 - ULP 协处理器在低功耗模式下读片内霍尔传感器HALL SENSOR_esp32 协处理器_晨之清风的博客-程序员秘密

陈拓 2022/05/26-2022/05/301. 概述在《ESP32深度睡眠电流怎样低于10uA》https://zhuanlan.zhihu.com/p/521640890https://blog.csdn.net/chentuo2000/article/details/125033711?spm=1001.2014.3001.5502一文中我们测试了ESP32在deep sleep模式下只使用RTC时的电流,本文我们再开启ULP协处理器,测试RTC和ULP开启时的deep s

用jQuery查找table下的某行某列_jquery获取table指定的行列_bzsjy的博客-程序员秘密

me.transcolor = function(container){debugger;var count = $("#grid table:first tbody tr",container).length;for(var m = 0; m < count;m++){//获取tab下 按标签属性查找th对象var wIndex = $("#grid table:first t...

VSCode 更新后打不开之解决办法_tianyvHon的博客-程序员秘密

VSCode 更新后打不开之解决办法1 前言前一段时间在使用 VSCode 的时候,通知窗口弹出了 更新版本 的提示,于是就点了进去,之后它自动的重装等一系列操作。更新完毕之后,等了一大段时间,没见 VSCode 响应,之后利用快捷方式也打不开。无奈之下进行了重装,当重装完毕之后,发现同样也没有响应,经过查找各种资源,发现没有卸载干净,下面记录一下我的解决过程。2 解决过程2.1 卸载 VSCode正常去卸载即可。2.2 重置网络环境以管理员身份打开 cmd,之后输入 netsh winsoc

2021-07-16_qq_41032328的博客-程序员秘密

opencv-python的视频的读取显示和保存视频的读取显示代码例子读取视频有两种方式,第一种是从摄像头读取视频,第二种是从电脑上读取视频。VideoCapture函数可以用来绑定摄像头或者视频。返回的是一个VideoCapture对象。如果输入摄像头的索引就可以绑定摄像头(0就是第一个摄像头1就是第二个摄像头以此类推),如果输入电脑上视频的地址就可以绑定一个电脑上的视频。isOpened函数可以判断是否绑定成功。read函数,需要VideoCapture对象来调用,他可以读取视频每一帧的图像。

推荐文章

热门文章

相关标签