pdf文件预览和导出
抢先观看:
-
window.URL.createObjectURL():
用于根据传入的 Blob 对象或 File 对象生成一个临时的、可访问的 URL,仅在浏览器会话中有效,并且不会上传到服务器。
const url = window.URL.createObjectURL(blob);
-
Blob对象:
是 Web 开发中用来表示二进制数据的大型对象,它可以是不可变的类文件对象,用于存储和处理大量的二进制数据,如文本文件、图像、音频等。
const blob = new Blob([data], { type: 'application/pdf' });
-
Blob特点:
①不可变:Blob 对象一旦创建,就无法修改内容,它是只读的。
②类文件对象:它允许在不访问文件系统的情况下处理数据,如读取或操作二进制文件(如图片和视频等)。
③支持切片:Blob 支持通过 slice() 方法进行切片,创建一个新的 Blob,从而提取其中的部分数据。
-
Blob的类型:
type 参数用于指定数据的 MIME 类型
MIME类型是一种互联网标准,用于表示文件的类型和格式。它帮助浏览器和服务器了解文件内容的性质,并选择合适的方式来处理或呈现它。
MIME 类型组成:主类型和子类型,用斜杠(
/)分隔,例如text/html、image/png。MIME类型使用场景:web浏览器(
Content-Type,可以确认 MIME 类型)、文件上传、API响应、邮件响应。
MIME常见类型以及对应格式:
1. 文本类型
text/plain:普通文本文件,例如.txttext/html:HTML 文档,例如.htmltext/css:CSS 样式表,例如.csstext/javascript:JavaScript 脚本,例如.js
2. 图像类型
image/jpeg:JPEG 图像,例如.jpg,.jpegimage/png:PNG 图像,例如.pngimage/gif:GIF 图像,例如.gifimage/svg+xml:SVG 矢量图形,例如.svg
3. 音频类型
audio/mpeg:MP3 音频,例如.mp3audio/ogg:Ogg Vorbis 音频,例如.oggaudio/wav:WAV 音频,例如.wav
4. 视频类型
video/mp4:MP4 视频,例如.mp4video/webm:WebM 视频,例如.webmvideo/ogg:Ogg Theora 视频,例如.ogv
5. 应用类型
application/json:JSON 数据,例如.jsonapplication/xml:XML 文档,例如.xmlapplication/pdf:PDF 文件,例如.pdfapplication/zip:ZIP 压缩包,例如.zipapplication/vnd.ms-excel:Excel 文件,例如.xlsapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet:Excel 2007+ 文件,例如.xlsxapplication/vnd.google-earth.kml+xml:KML 文件,例如.kmlapplication/octet-stream:任意的二进制数据,常用于下载文件
实现:
-
后端接口请求并返回文件流数据:
import http from "@/api/index";
export async function ReportApi (params) {try {const res = await http({url: "/api-flight/uavFlyData/history/report",method: "POST",data: params,headers: {"Content-Type": "application/json;charset=UTF-8",},responseType: 'blob'});console.log(res, 'res');return res;} catch (error) {console.log(error, 'error');return error;}
}
-
在点击事件上,预览和导出方法:
//将点击事件绑定到预览或者导出按钮
const reportCilck=()=>{
try {let params = {...//传入所需的参数}const res = await ReportApi(JSON.stringify(params))if (res && res.status === 200) {
//创建 Blob 对象pdfUrl.value = window.URL.createObjectURL(new Blob([res.data], { type: 'application/pdf' }));const fname = '文件导出.pdf';
//创建一个 <a> 元素用于触发下载const link = document.createElement('a');
//设置连接属性link.href = pdfUrl.value;link.setAttribute('download', fname);
//触发下载并清理document.body.appendChild(link);link.click();document.body.removeChild(link);window.URL.revokeObjectURL(pdfUrl.value);ElMessage.success('文件下载成功');}} catch (err) {ElMessage.error('文件下载失败');}
}
相关文章:
pdf文件预览和导出
抢先观看: window.URL.createObjectURL(): 用于根据传入的 Blob 对象或 File 对象生成一个临时的、可访问的 URL,仅在浏览器会话中有效,并且不会上传到服务器。 const url window.URL.createObjectURL(blob);Blob 对象: 是 …...
服务器数据恢复—RAID5阵列硬盘坏道掉线导致存储不可用的数据恢复案例
服务器存储数据恢复环境: 一台EqualLogic存储中有一组由16块SAS硬盘组建的RAID5阵列。上层划分了4个卷,采用VMFS文件系统,存放虚拟机文件。 服务器存储故障: 存储RAID5阵列中磁盘出现故障,有2块硬盘对应的指示灯亮黄灯…...
快速傅里叶变换(FFT)基础(附python实现)
对于非专业人士,傅里叶变换一直是一个神秘的武器,它可以分析出不同频域的信息,从时域转换到频域,揭示了信号的频率成分,对于数字信号处理(DSP)、图像、语音等数据来说,傅里叶变换是最…...
使用Docker-compose安装mysql5.7
1.首先选择一个目录用来存放docker-compse文件以及mysql的数据(例如logs、conf) cd /home mkdir mysql vi docker-compose.yml2.填写docker-compse.yml内容 version : 3 services:mysql:# 容器名(以后的控制都通过这个)container_name: mysql# 重启策略…...
如何管理PHP的API部署环境
管理PHP的API部署环境是一个涉及多个步骤和考虑因素的过程。以下是一些关键步骤和最佳实践,用于管理PHP的API部署环境: 一、选择合适的服务器和配置环境 选择服务器:根据API的访问量和性能需求,选择合适的服务器。可以选择物理服…...
web——sqliabs靶场——第一关
今天开始搞这个靶场,从小白开始一点点学习,加油!!!! 1.搭建靶场 注意点:1.php的版本问题,要用老版本 2.小p要先改数据库的密码,否则一直显示链接不上数据库 2.第一道题࿰…...
tartanvo ubuntu 20.04部署
1. 所有环境安装流程参考 2. 运行python3 tartanvo_node.py出现问题: ImportError: cannot import name int from numpy版本问题,卸载当前版本并更换版本: pip uninstall numpy pip install numpy1.22.4问题解决。 3. 采用2to3脚本将其代…...
SpringBoot整合Freemarker(三)
定义循环输出的宏 <#macro list title items> ${title?cap_first}:<#list items as x>*${x?cap_first}</#list> </#macro><list items["mouse", "elephant", "python"] title"Animals"/> 输出结果…...
Android 一个APP打开另一个app的两种方式,需添加QUERY_ALL_PACKAGES权限
加<uses-permission android:name"android.permission.QUERY_ALL_PACKAGES"/> 方式1:打开外部app,在新窗口打开。 private void doStartAppPackageName(String packagename) { // 通过包名获取此APP详细信息&#x…...
<数据集>草莓叶片病害识别数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:4371张 标注数量(xml文件个数):4371 标注数量(txt文件个数):4371 标注类别数:7 标注类别名称:[Angular Leafspot, Anthracnose Fruit Rot, Blossom Blight, Gray Mol…...
React 中 `key` 属性的警告及其解决方案
React 中 key 属性的警告及其解决方案 文章目录 React 中 key 属性的警告及其解决方案1. 引言2. 什么是 key 属性3. key 属性的重要性4. 常见的 key 属性警告及其原因4.1 缺少 key 属性4.2 使用不稳定的 key(如索引)4.3 重复的 key 值 5. 如何解决 key 属…...
OpenHarmony4.1蓝牙芯片如何适配?触觉智能RK3568主板SBC3568演示
当打开蓝牙后没有反应时,需要排查蓝牙节点是否对应、固件是否加载成功,本文介绍开源鸿蒙OpenHarmony4.1系统下适配蓝牙的方法,触觉智能SBC3568主板演示 修改对应节点 开发板蓝牙硬件连接为UART1,修改对应的节点,路径为…...
濮良贵《机械设计》第十版课后习题答案全解PDF电子版
《机械设计》(第十版)是“十二五”普通高等教育本科国家级规划教材, 是在《机械设计》(第九版)的基础上修订而成的。本次修订主要做了以下几项工作: 1. 内容的适当更新——自本书第九版出版以来, 机械工程及相关领域的新理论、新技术和新标准…...
Python进阶语法探索:列表推导式
在Python编程中,列表推导式(List Comprehensions)是一种简洁而强大的语法结构,它允许你以一行代码的形式创建列表,同时执行循环、条件判断等操作。列表推导式不仅提高了代码的可读性,还显著提升了编程效率。…...
java合并图片与文字
通过java来绘制海报,加载外部字体并设置样式大小与加粗、设置背景图、合并图片,下面是示例 import javax.imageio.ImageIO; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.…...
OpenCV快速入门
OpenCV(Open Source Computer Vision Library,开源计算机视觉库)是一个广泛应用于图像处理、计算机视觉、视频分析等领域的开源库。它不仅适用于研究人员和开发人员,还被广泛用于学术、工业和商业应用。本篇文章将帮助你快速了解 …...
ArcGIS软件之“计算面积几何”地图制作
一、消防站的泰森多边形 效果图: 二、人口调查的泰森多边形 确定后效果图: 三、人口调查的泰森多边形属性设置 确定后的效果图: 四、计算面积几何,用于求密度 先添加字段area_1,然后设置浮点型及字段属性 五…...
RHCE 第四次作业
一.搭建dns服务器能够对自定义的正向或者反向域完成数据解析查询。 1.配置环境 [rootlocalhost ~]# yum install bind [rootlocalhost ~]#systemctl stop firewalld [rootlocalhost ~]#setenforce 0 2.配置DNS主服务器 [rootlocalhost ~]# vim /etc/named.conf options { …...
【贪心算法】No.1---贪心算法(1)
文章目录 前言一、贪心算法:二、贪心算法示例:1.1 柠檬⽔找零1.2 将数组和减半的最少操作次数1.3 最⼤数1.4 摆动序列1.5 最⻓递增⼦序列1.6 递增的三元⼦序列 前言 👧个人主页:小沈YO. 😚小编介绍:欢迎来到…...
分布式光伏管理办法
随着分布式光伏项目的不断增加,传统的管理方式已经难以满足高效、精准的管理需求。光伏业务管理系统作为一种集信息化、智能化于一体的管理工具,正在逐步成为分布式光伏项目管理的重要支撑。 光伏业务管理系统通过数字化手段实现对光伏业务全流程的精细化…...
Oto 多平台适配原理揭秘:从 Windows 到 Android 的底层实现
Oto 多平台适配原理揭秘:从 Windows 到 Android 的底层实现 【免费下载链接】oto ♪ A low-level library to play sound on multiple platforms ♪ 项目地址: https://gitcode.com/gh_mirrors/ot/oto Oto 是一个强大的跨平台音频播放库,支持从 W…...
DuClaw智能体:DuClaw接入钉钉
本文主要介绍如何为DuClaw配置钉钉消息渠道,配置后即可通过对应的钉钉机器人与DuClaw进行对话。 钉钉侧配置 步骤一:创建钉钉应用。 前往钉钉开发者平台(需有管理员权限),点击“创建应用”。 在左侧目录中选择“钉钉…...
Qt实战:构建跨平台低功耗蓝牙BLE应用开发框架
1. 为什么选择Qt开发跨平台BLE应用 如果你正在为智能家居设备或者可穿戴设备开发蓝牙通信功能,Qt绝对是一个值得认真考虑的选择。我做过不少BLE项目,从智能手环到智能门锁都用过Qt开发,最大的感受就是它真的能省去很多跨平台的麻烦。 Qt的蓝牙…...
如何在Windows平台上快速构建专业级词法语法分析器:WinFlexBison终极指南
如何在Windows平台上快速构建专业级词法语法分析器:WinFlexBison终极指南 【免费下载链接】winflexbison Main winflexbision repository 项目地址: https://gitcode.com/gh_mirrors/wi/winflexbison WinFlexBison是Windows平台上最专业的词法分析和语法解析…...
利用Taotoken用量看板精细化管理团队大模型API消费
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用Taotoken用量看板精细化管理团队大模型API消费 对于团队管理者而言,在引入大模型能力后,一个普遍存在的…...
在Windows上轻松安装APK文件:APK Installer完全指南
在Windows上轻松安装APK文件:APK Installer完全指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾想过在Windows电脑上直接运行Android应用&…...
Linux内核安全加固:从编译配置构建系统防护基石
1. 项目概述:为什么我们需要关注内核安全配置?在服务器运维、嵌入式开发或者安全研究领域待久了,你可能会发现一个现象:很多系统被攻破,根源并不在于某个惊天动地的零日漏洞,而在于内核配置本身就没“锁好门…...
Arduino与FastLED库驱动WS2812B实现彩虹闪烁可穿戴灯光系统
1. 项目概述:用代码点亮创意的可穿戴灯光几年前,我第一次尝试把LED灯带缝进一件卫衣的帽子里,初衷很简单,就是想在做夜跑时更醒目一些。但当那些WS2812B灯珠第一次随着音乐节奏亮起彩虹般流动的色彩时,我知道我打开了一…...
3步完成B站缓存视频转换:m4s转MP4的终极免费解决方案
3步完成B站缓存视频转换:m4s转MP4的终极免费解决方案 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾为B站视频下架而痛心不…...
