当前位置: 首页 > news >正文

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/htmlimage/png

MIME类型使用场景:web浏览器(Content-Type,可以确认 MIME 类型)、文件上传、API响应、邮件响应。


MIME常见类型以及对应格式:

1. 文本类型
  • text/plain:普通文本文件,例如 .txt
  • text/html:HTML 文档,例如 .html
  • text/css:CSS 样式表,例如 .css
  • text/javascript:JavaScript 脚本,例如 .js
2. 图像类型
  • image/jpeg:JPEG 图像,例如 .jpg, .jpeg
  • image/png:PNG 图像,例如 .png
  • image/gif:GIF 图像,例如 .gif
  • image/svg+xml:SVG 矢量图形,例如 .svg
3. 音频类型
  • audio/mpeg:MP3 音频,例如 .mp3
  • audio/ogg:Ogg Vorbis 音频,例如 .ogg
  • audio/wav:WAV 音频,例如 .wav
4. 视频类型
  • video/mp4:MP4 视频,例如 .mp4
  • video/webm:WebM 视频,例如 .webm
  • video/ogg:Ogg Theora 视频,例如 .ogv
5. 应用类型
  • application/json:JSON 数据,例如 .json
  • application/xml:XML 文档,例如 .xml
  • application/pdf:PDF 文件,例如 .pdf
  • application/zip:ZIP 压缩包,例如 .zip
  • application/vnd.ms-excel:Excel 文件,例如 .xls
  • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:Excel 2007+ 文件,例如 .xlsx
  • application/vnd.google-earth.kml+xml:KML 文件,例如 .kml
  • application/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('文件下载失败');}
}

http://www.lryc.cn/news/479899.html

相关文章:

  • 服务器数据恢复—RAID5阵列硬盘坏道掉线导致存储不可用的数据恢复案例
  • 快速傅里叶变换(FFT)基础(附python实现)
  • 使用Docker-compose安装mysql5.7
  • 如何管理PHP的API部署环境
  • web——sqliabs靶场——第一关
  • tartanvo ubuntu 20.04部署
  • SpringBoot整合Freemarker(三)
  • Android 一个APP打开另一个app的两种方式,需添加QUERY_ALL_PACKAGES权限
  • <数据集>草莓叶片病害识别数据集<目标检测>
  • React 中 `key` 属性的警告及其解决方案
  • OpenHarmony4.1蓝牙芯片如何适配?触觉智能RK3568主板SBC3568演示
  • 濮良贵《机械设计》第十版课后习题答案全解PDF电子版
  • Python进阶语法探索:列表推导式
  • java合并图片与文字
  • OpenCV快速入门
  • ArcGIS软件之“计算面积几何”地图制作
  • RHCE 第四次作业
  • 【贪心算法】No.1---贪心算法(1)
  • 分布式光伏管理办法
  • 2024最新软件测试面试热点问题
  • 如何利用探商宝精准营销,抓住行业机遇——以AI技术与大数据推动企业信息精准筛选
  • 嵌入式硬件电子电路设计(三)电源电路之负电源
  • 数据仓库还是数据集市?这俩怎么选?
  • 计算机图形学 实验二 三维模型读取与控制
  • NAT网络工作原理和NAT类型
  • wget命令之Tomcat(三)
  • IP地址修改器 5.0 重制版
  • vscode编译s32ds工程
  • 大数据专业为什么要学习Hadoop课程
  • Xilinx FPGA的Vivado开发流程