预览和下载 (pc和微信小程序)

1.微信小程序 预览pdf 或者 图片等 

//utils.js  文件//通过接口返回文件链接 打开文档
export default function previewFile({ downLinkUrl, tempFilePath }) {let url = "https://" + downLinkUrl.replace("http://", "").replace("https://", "");return new Promise((resolve, reject) => {wx.downloadFile({url: url,success(res) {//保存到本地wx.saveFile({tempFilePath: res.tempFilePath,success(res) {const savedFilePath = res.savedFilePath;// 打开文件wx.openDocument({filePath: savedFilePath,showMenu: true,success(res) {resolve({ code: 200, msg: "打开文档成功", data: { savedFilePath } });},fail(err) {reject({ code: 500, msg: "打开文件失败", data: err });}});},fail(err) {reject({ code: 500, msg: "保存文件失败", data: err });}});},fail(err) {reject({ code: 500, msg: "下载文件失败", data: err });}});});
}
 //预览       previewFile(item) {//图片类型const isImageType = [".png", ".jpe", ".jpeg", ".jpg", ".gif"];const fileSuffix = item.fileName.substring(item.fileName.lastIndexOf("."));//如果是图片if (isImageType.includes(fileSuffix)) {wx.previewImage({showmenu: true,urls: [item.downLinkUrl], // 需要预览的图片 http 链接列表success() {console.log("打开图片成功");},fail(err) {console.log(err);uni.$u.toast("打开图片失败");}});} else {uni.showLoading();//如果有临时文件路径if (item.tempFilePath) {// 打开文件wx.openDocument({filePath: item.tempFilePath,showMenu: true,success(res) {uni.$u.toast("打开文档成功");},fail(err) {uni.$u.toast("预览失败请稍后重试");}});} else {previewFile(item).then(res => {let { savedFilePath } = res.data;item.tempFilePath = savedFilePath;uni.$u.toast(res.msg);}).catch(err => {uni.$u.toast(err.msg);}).finally(() => {// uni.hideLoading();});}}},//判断是否显示预览按钮isPreviewFileType(fileName) {const fileSuffix = fileName.substring(fileName.lastIndexOf("."));const isPreviewFileType = [".png",".jpe",".jpeg",".jpg",".gif",".pdf",".PDF",".doc",".docx",".dot",".xlc",".xlm",".xls",".xlt",".xlw",".xlsx"];if (isPreviewFileType.includes(fileSuffix)) {return true;} else {return false;}}

文件下载

        downLoadFile(item) {if (item.downLoading) return;item.downLoading = true;const linkUrl = item.downLinkUrl.replace(/^http:\/\//, "https://");uni.downloadFile({url: linkUrl,success: res => {item.downTempFilePath = res.tempFilePath;this.onExport(item);},fail: err => {console.log("err----", err);this.$u.toast("下载失败,请检查您的网络");},complete: function() {setTimeout(() => {item.downLoading = false;}, 0);}});},

 2.浏览器预览

export function previewHandle(params) {//新开页面-预览文件let url = params.downLinkUrl,fileName = params.fileName;const fileSuffix = fileName.substring(fileName.lastIndexOf("."));if (isPreviewFileType.includes(fileSuffix)) {const previewUrl = `http://dcsapi.com/?k=57170800621178060806081&url=${encodeURIComponent(url)}&watermark=千里马招标网`;window.open(previewUrl);} else {alert("该文件暂不支持预览~");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/890685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用例图和活动图的区别与联系

在软件开发过程中,需求分析是至关重要的一步。为了更好地理解和描述系统的功能需求,开发人员通常会使用各种图形化工具。其中,用例图和活动图是两种非常常用的工具。虽然它们都用于描述系统的行为,但各自具有不同的特点和适用场景…

PCL-计算点云AABB包围盒

PCL-计算点云AABB包围盒 一、概述二、实验代码三、效果展示四、总结 一、概述 点云包围盒也叫外接最小矩形,是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。常见的包…

Linux复习3——管理文件系统2

修改文件权限命令 chmod 功能: chmod 命令主要用于修改文件或者目录的权限 只有文件所有者和超级用户可以修改文件或目录的权限 (1)使用数字表示法修改权限 所谓数字表示法是指将读取(r)、写入(w)和执行(x)分别以4、2、1来表示,没有授予的部分就表示…

微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)

原理图设计 汇编代码 ; I/O 端口地址定义 IOY0 EQU 0600H IOY1 EQU 0640H IOY2 EQU 0680HMY8255_A EQU IOY000H*2 ; 8255 A 口端口地址 MY8255_B EQU IOY001H*2 ; 8255 B 口端口地址 MY8255_C EQU IOY002H*2 ; 8255 C 口端口地址 MY8255_MODE EQU IOY003H*2 ; …

代码随想录day25 | leetcode 491.递增子序列 46.全排列 回溯总结

考试周连考不复习就挂科了 一直没更新十分抱歉 今天开始在周日前补回来 491.递增子序列 在90.子集I中我们是通过排序,再加一个标记数组来达到去重的目的。 而本题求自增子序列,是不能对原数组进行排序的,排完序的数组都是自增子序列了。 …

车载U盘制作教程:轻松享受个性化音乐

车载U盘播放音乐相较于蓝牙播放具有一些明显的优势,这些优势主要体现在音质、稳定性、音乐管理以及兼容性等方面。以下是车载U盘播放音乐的一些优势: 音质更佳:车载U盘播放音乐时,音乐文件是直接被解码并播放的,这意味…

C语言从入门到放弃教程

C语言从入门到放弃 1. 介绍1.1 特点1.2 历史与发展1.3 应用领域 2. 安装2.1 编译器安装2.2 编辑器安装 3. 第一个程序1. 包含头文件2. 主函数定义3. 打印语句4. 返回值 4. 基础语法4.1 注释4.1.1 单行注释4.1.2 多行注释 4.2 关键字4.2.1 C语言标准4.2.2 C89/C90关键字&#xf…

重温设计模式--8、命令模式

文章目录 命令模式的详细介绍C 代码示例C代码示例2 命令模式的详细介绍 定义与概念 命令模式属于行为型设计模式,它旨在将一个请求封装成一个对象,从而让你可以用不同的请求对客户端进行参数化,将请求的发送者和接收者解耦,并且能…

oracle怎样使用logmnr恢复误删除的数据

如果有同事误删除数据了,可以用logmnr挖掘归档日志,生成回滚sql,快速恢复数据,比用整个库的备份恢复要快得多。 一 操作步骤 1.1 创建目录 su - oracle mkdir logmnr create directory logmnr_dir as /home/oracle/logmnr; …

读取文件内容、修改文件内容、识别文件夹目录(Web操作系统文件文件夹详解)

前言 因 Unicode IDE 编辑器导入文件、文件夹需要,研究了下导入文件/文件夹的功能实现,发现目前相关文章有点少,故而记录下过程,如果有误,还望指正。(API的兼容性及相关属性、接口定义,请自行查看文件系统…

第6章 图论

2024年12月25日一稿 🐰6.1 图的基本概念 6.1.1 图的定义和表示 6.1.2 图的同构 6.1.3 完全图与正则图 6.1.4 子图与补图 6.1.5 通路与回路 6.2 图的连通性 6.2.1 无向图的连通性 6.2.2 有向图的连通性 6.3 图的矩阵表示 6.3.1 关联矩阵 6.3.2 有向图的邻接矩阵…

网络管理(Network Management,NM)(一)

1.什么是AUTOSAR的网络管理?为什么要网络管理 ? 2.网络管理的三种模式? 上电时,进入总线睡眠模式,如果有唤醒源唤醒,则进入网络模式。其中。唤醒源唤醒分为主动唤醒和被动唤醒,主动唤醒指的是ecu自己想使…

三维扫描在汽车/航空行业应用

三维扫描技术应用范围广泛,从小型精密零件到大型工业设备,都能实现快速、准确的测量。 通过先进三维扫描技术获取产品和物体的形面三维数据,建立实物的三维图档,满足各种实物3D模型数据获取、三维数字化展示、3D多媒体开发、三维…

机器学习实战32-利用机器学习对电商销售数据进行归因分析的方法,旨在找出销量下降的原因

大家好,我是微学AI,今天给大家介绍一下机器学习实战32-利用机器学习对电商销售数据进行归因分析的方法,旨在找出销量下降的原因。文章详细介绍了代码编写过程、应用场景及其具体操作,通过实际案例分析,帮助读者深入了解如何运用机器学习技术对电商销售数据进行分析,从而为…

录播检测原理是什么?

直播间录播的检测可以通过多种方式进行。以下是一些常见的检测方法: 1、水印识别:直播平台可以在实时直播画面中嵌入特定的水印,通过识别水印来判断是否存在录播行为。 2、特征分析:直播平台可以通过对直播画面进行特征分析,检测…

WebSocket | 背景 概念 原理 使用 优缺点及适用场景

1 背景 在 WebSocket 出现之前,为了实现推送技术,所用的技术都是轮询,轮询是指浏览器每隔一段时间向服务器发出 HTTP 请求,服务器再返回最新的数据给客户端 常见的轮询方式分为轮询与长轮询,它们的区别如下图所示&…

硬件设计-传输线匹配

目录 简介: 主题: 终端匹配 始端匹配 始端匹配的阻值 始端匹配的输出驱动电流 中间匹配 电阻阻值的选择 简介: 系统何时需要匹配电阻?按照第四章的内容来看有两种情况:长线传输造成信号反射的情况和短线传输造成…

设计模式的主要分类是什么?请简要介绍每个分类的特点。

大家好,我是锋哥。今天分享关于【设计模式的主要分类是什么?请简要介绍每个分类的特点。】面试题。希望对大家有帮助; 设计模式的主要分类是什么?请简要介绍每个分类的特点。 1000道 互联网大厂Java工程师 精选面试题-Java资源分…

基于微信小程序的校园访客登记系统

基于微信小程序的校园访客登记系统 功能列表 用户端功能 注册与登录 :支持用户通过手机号短信验证码注册和登录。个人资料管理 :允许用户编辑和更新个人信息及其密码。站内信消息通知:通知公告。来访预约:提交来访预约支持车牌…

重温设计模式--观察者模式

文章目录 观察者模式(Observer Pattern)概述观察者模式UML图作用:实现对象间的解耦支持一对多的依赖关系易于维护和扩展 观察者模式的结构抽象主题(Subject):具体主题(Concrete Subject&#xf…