uniapp 微信小程序和h5处理文件(pdf)下载+保存到本地+预览功能
uniapp实现微信小程序下载资源功能和h5有很大的不同,后台需返回blob文件流
1.微信小程序实现下载资源功能
步骤1:下载文件
uni.downloadFile({url:url,//调接口返回urlsuccess:(res)=>{uni.hideLoading();if(res.statusCode==200){var tempFilePath = res.tempFilePath;saveFile(tempFilePath);}else{uni.showToast({icon:'none',title:'报告下载失败'})}},fail:err=>{uni.hideLoading();uni.showToast({icon:'none',title:'报告下载失败'})reject(err);}
})
步骤2:保存文件
saveFile(tempFilePath){//保存到本地//文件保存到本地uni.saveFile({tempFilePath:tempFilePath,//临时路径success:res=>{uni.showToast({icon:'none', mask:true,title:'文件已保存'+res.savedFilePath,//保存路径duration:3000})setTimeOut(()=>{//打开文档查看uni.openDocument({filePath:res.savedFilePath,success:res=>{console.log('打开文档成功');}})},3000)}})
}
步骤3:打开文档查看
//打开文档查看
uni.openDocument({filePath:res.savedFilePath,success:res=>{console.log('打开文档成功');}
})
2.H5实现下载资源功能
步骤1:获取下载文件
uni.downloadFile({url:url,//调接口返回的urlsuccess:res=>{uni.hideLoading();if(res.statusCode==200){var tempFilePath = res.tempFilePath;saveFile(tempFilePaht);}else{uni.showToast({icon:'none',title:'报告下载失败'})}},fail:err=>{uni.hideLoading();uni.showToast({icon:'none',title:'报告下载失败'})reject(err);}
})
步骤2:保存文件
saveFile(url){//保存到本地try{const fileName = '报告名称';//new Blob 实例化文件流//let url = fileData//const url = window.URL.createObjectURL(new Blob([fileData],{type:'application/pdf'}))const link = document.createElement('a');link.style.display = 'none';link.href = url;link.setAttribute('download',fileName);document.body.appendChild(link);link.click();//下载完成移除元素document.body.removeChild(link);//释放掉blob对象window.URL.revokeObjectURL(url)uni.showToast({title:'下载成功'})}catch(error){uni.showToast({title:'下载失败'})}
}
h5浏览文件直接后台给文件地址即可。
以上内容摘自https://blog.csdn.net/panfu163/article/details/132832484
以上代码并未通过验证,后续使用到,有问题的话会补充。
相关文章:
uniapp 微信小程序和h5处理文件(pdf)下载+保存到本地+预览功能
uniapp实现微信小程序下载资源功能和h5有很大的不同,后台需返回blob文件流 1.微信小程序实现下载资源功能 步骤1:下载文件 uni.downloadFile({url:url,//调接口返回urlsuccess:(res)>{uni.hideLoading();if(res.statusCode200){var tempFilePath …...
Linux从0到1——Linux第一个小程序:进度条
Linux从0到1——Linux第一个小程序:进度条 1. 输出缓冲区2. 回车和换行的本质3. 实现进度条3.1 简单原理版本3.2 实际工程版本 1. 输出缓冲区 1. 小实验: 编写一个test.c文件,: #include <stdio.h> #include <unistd.h…...
软件工程师,是时候了解下Rust编程语言了
背景 2024年年初,美国政府发布了一份网络安全报告,呼吁软件开发人员停止使用容易出现内存安全漏洞的编程语言,比如:C和C,转而使用内存安全的编程语言。这份报告由美国网络空间总监办公室 (ONCD) 发布,旨在落…...
SSL---VPN
文章目录 目录 一.SSL-VPN概述 优点 二.SSL协议的工作原理 三.虚拟网关技术 用户认证方式 本地认证 服务器认证: 证书匿名认证 Web代理 Web-link和Web改写 端口转发 网络扩展(允许UDP协议) 总结 一.SSL-VPN概述 SLL VPN是一种基于HTTPS&am…...
Chrome 跨域问题CORS 分析
先叠个甲,有错误,望沟通指正! 文章目录 1.什么是跨域报错2.为什么postman可以,浏览器访问就不行?根本原因是什么?2.1浏览器是依据什么来报错跨域的? 3.常规解决方案的分析方案1.通过代理解决方案2.被请求的B域的服务端开启Access-Control-Allow-Origin返回头的支持方案3.通…...
GPU性能测试中的张量和矩阵运算
正文共:888 字 7 图,预估阅读时间:1 分钟 前面我们使用PyTorch将Tesla M4跑起来之后(成了!Tesla M4Windows 10AnacondaCUDA 11.8cuDNNPython 3.11),一直有个问题,那就是显存容量的问…...
Linux运维_Bash脚本_编译安装FreeRDP-3.3.0
Linux运维_Bash脚本_编译安装FreeRDP-3.3.0 Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 Sh (Bourne Shell) 的替代品。 您可以在 Linux…...
CMake官方教程4--使用表达式生成器
1. 使用表达式生成器产生警告 CMakeList.txt cmake_minimum_required(VERSION 3.15)project(Tutorial VERSION 1.0)add_library(tutorial_compiler_flags INTERFACE) target_compile_features(tutorial_compiler_flags INTERFACE cxx_std_11)set(gcc_like_cxx "$<COM…...
git for windows
记录,git svn混用,检出代码时出错及解决方案, 执行命令: git svn clone svn_project_url 报错: certificate problem.(R)eject,accept (t)emporarily or accept (p)ermanently 解决: 在弹框中 输入P …...
C++实验 面向对象编程
一、实验目的: 掌握类中静态成员的定义方法,初始化方法,使用方法; 掌握类的友元说明方法,理解友元的使用特点 二、实验内容: 1、编写程序,统计某旅馆住宿客人的总数,要求输入客人…...
VC++ 设置网卡接口MTU大小
在 Windows C/C 之中一共有三种方法可以设置网卡的MTU大小。 方法一: SetIpInterfaceEntry 法 static bool SetInterfaceMtu2(int interface_index, int mtu) noexcept{PIP_ADAPTER_ADDRESSES pAddresses NULL;ULONG ulBufLen 0;GetAdaptersAddresses(AF_UNSPEC…...
dpdk-19.11 对向量指令的使用情况分析
不同向量指令识别关键字 __m128i sse uint64x2_t neon __m256i avx2 __m512i avx512 vector altivec dpdk 向量收发包函数 支持 arm neno 向量收发包函数的 pmd 驱动 bnxt hns3 i40e ixgbe mlx5 virtio 支持 sse 向量收发包函数的 pmd 驱动 axgbe hinic fm10k bnxt i40e …...
使用CIP采集欧姆龙EtherNet/IP从入门到精通
本文将会从以下几个方面介绍 1.CIP是什么 2.EtherNet/IP通信是什么 3.CIP通信报文解析 4.使用CIP常用的方法和功能介绍(UCMM) 5.自己封装了一个类,只要知道标签名称,和数据类型即可读写数据 6.demo展示 1.CIP是什么 CIP通信…...
企业如何高效管理微信里的客户?
对于企业来说,懂得高效管理微信列表的客户是非常重要的一件事,只有把客户管理好了,才能更好地提高客户的满意度和忠诚度,我们的销售业务才能顺利进行。 那么,应该怎样管理才能算是高效管理呢?下面就给大家…...
怎么在windows系统上查看kylinos的md5、sha1、sha256值
背景 当前信创行业正如火如荼进行中,当下载kylinos镜像到windows系统下,如何核对镜像是否有损坏,确保文件不被篡改,需要使用工具计算md5、sha1、sha256、sha512值,并与出库邮件中的md5比对。 QuickHash GUI软件简介 QuickHash GUI是一款开源代码的哈希工具,注意哈希能够…...
Windows中在C#中使用Dapper和Mysql.Data库连接MySQL数据库
Windows中在C#中使用Dapper和Mysql.Data库连接MySQL数据库 在Windows中使用C#连接Mysql数据库比较简单,可以直接使用MySql.Data库,目前最新版本为:8.3.0。 当然也可以结合MySql.Data和Dapper库一起使用,目前Dapper的最新版本为&a…...
大一专科,物联网专业,变态成长偏方!
最近看到一个大一,物联网专业的学生提问: 印象中,物联网专业2011年才有的,正好是我毕业那年。 我大概看过物联网专业要学的内容,总结下来就是,比软件不如计算机,比硬件知识不如电子。 不知道老师…...
MyBatis入门(JDBC规范,MyBatis,连接池,Lombok)【详解】
目录 一、JDBC规范【了解】 1. JDBC介绍 2. JDBC示例 3. JDBC的问题 二、MyBatis入门【重点】 1. Mybatis是什么 2. Mybatis使用步骤 3. Mybatis入门案例 1.创建SpringBoot工程 2.创建Mapper 3.功能测试 三、连接池【了解】 1. 什么是连接池 2. 有哪些数据库连接池…...
Vue3--数据和方法
data 组件的 data 选项是一个函数。Vue 在创建新组件实例的过程中会自动调用此函数。 data选项通常返回一个对象,然后 Vue 会通过响应性系统将其包裹起来,并以 $data 的形式存储在组件实例中。 <!DOCTYPE html> <html lang"en"&g…...
网络编程面试题
一、什么是IP地址 1.IP地址是主机在网路中的唯一标识,,当主机从一个网络切换到另一个网络时,会更改IP地址,同样的IP地址也是路由器进行路由选择的标识 2.IP地址的分类 IPV4:采用4字节无符号整数存储 IPV6ÿ…...
Git-RSCLIP入门到精通:从基础地物识别到复杂场景分析全流程解析
Git-RSCLIP入门到精通:从基础地物识别到复杂场景分析全流程解析 1. 遥感智能分析的新利器 在遥感图像分析领域,传统方法往往需要大量标注数据和复杂的模型训练流程。Git-RSCLIP的出现彻底改变了这一局面,它基于先进的SigLIP架构,…...
基于物理信息神经网络的Burgers-Fisher方程求解方法研究(Python代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
手把手教你学<基于 Linux 的 NPU 协处理器固件开发>专栏第1章 入门:
1.2 典型 AI 芯片架构:主核 Linux + NPU 协处理器 在上一节我们明确了NPU是依附于Linux主核的专用AI协处理器,属于主从配合的工作模式,这一节我们就深入拆解端侧AI芯片最主流的“Linux主核+NPU协处理器”异构架构。结合大家日常接触的代码仓库管理、编译脚本执行、固件烧录…...
MongoDB高级面试:进阶面试题50题及答案详解
更多内容请见: 《深入掌握MongoDB数据库》 - 专栏介绍和目录 文章目录 一、高级查询优化与执行计划 (8题) 二、高级索引策略 (8题) 三、高级分片策略与优化 (8题) 四、性能调优与瓶颈分析 (7题) 五、高级复制集配置与故障处理 (6题) 六、高级事务与一致性模型 (5题) 七、安全高…...
Gitee团队协作实战:从零到一掌握项目协同开发流程
1. 为什么选择Gitee进行团队协作开发 作为一个经历过多次团队协作开发的老手,我强烈推荐Gitee作为国内团队的代码托管平台。相比其他平台,Gitee的服务器在国内,访问速度更快,而且完全符合国内开发者的使用习惯。记得我第一次带团队…...
Phi-4-mini-reasoning入门指南:用Gradio Blocks构建多步解题UI
Phi-4-mini-reasoning入门指南:用Gradio Blocks构建多步解题UI 1. 认识Phi-4-mini-reasoning Phi-4-mini-reasoning是一款3.8B参数的轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这个模型主打"小参数、强推理、长上下文、…...
弹幕盒子:5分钟掌握专业弹幕制作,零基础也能轻松上手
弹幕盒子:5分钟掌握专业弹幕制作,零基础也能轻松上手 【免费下载链接】danmubox.github.io 弹幕盒子 项目地址: https://gitcode.com/gh_mirrors/da/danmubox.github.io 你是否曾为视频制作寻找合适的弹幕工具而烦恼?想要给视频添加互…...
Harness:统一企业级 DevOps 平台的新标准
核心导读:随着云计算和微服务架构的普及,传统 DevOps 工具链越来越碎片化。Harness 作为一个集 CI/CD、GitOps、功能发布、云成本管理、混沌工程于一身的企业级平台,正在改变团队的交付方式。本文深入探讨 Harness 如何解决现代化 DevOps 的核…...
软件工程小白必看:从零理解软件生命周期与常见模型
软件工程入门指南:从零理解开发全流程与核心模型 从生活场景看软件生命周期 想象一下建造一栋房子的过程——从最初的蓝图设计到最终交付钥匙,每个阶段都有明确的目标和交付物。软件开发的历程同样如此,我们称之为"软件生命周期"。…...
生成式AI系统“内容生成”合规:架构师如何避免“虚假信息”?附4个方法
生成式AI内容生成合规指南:架构师如何系统性规避虚假信息? 元数据框架 标题 生成式AI内容生成合规指南:架构师如何系统性规避虚假信息?——从理论到实践的4大核心策略 关键词 生成式AI合规, 虚假信息防范, 事实一致性, 架构设计, …...
