Vue 简版文件预览笔记
简版文件预览笔记
调用方法
<script lang="ts" setup>import {exportFileData,preViewFile,} from '@/xxx/tools.ts';import {fileDownload,} from '@/api/xxx/xx';// 预览方法const handleViewBtn = () => {const filePath = 获取预览地址;const urlFormat = 获取预览地址的扩展名(xxx.toLowerCase())// 这里是预览接口请求,具体根据自己的接口来定fileDownload({ filePath }).then((res: any) => {// 导出的预览数据和预览类型let {filePathData , viewType} = exportFileData(res.data, urlFormat);switch (viewType) {case 'img':const imgObj: any = preViewFile('', '_blank', 1000, 700);imgObj.document.write(`<!DOCTYPE html><html><body><img src='${filePathData}' style='height:100%;width:100%'/></body></html>`);break;case 'txt':const txtObj: any = preViewFile('', '_blank', 1000, 700);txtObj.document.write(`<iframe src="${filePathData}" width="100%" height="100%" frameborder="0"> </iframe>`);break;case 'pdf_ppt_doc_xls':preViewFile(filePathData, '_blank', 1000, 700);break;default:console.log('没匹配到');break;}});};
</script>
公共方法
/*** @description: 预览文档时新打开窗口的样式* @param {string} url 预览地址* @param {string} name 名称* @param {number} w 宽度* @param {number} h 高度* @param {string} type 打开的类型 是pdf 还是图片 txt* @return {*}*/
export const preViewFile = (url: string, name: string, w: number, h: number) => {const iTop = (window.screen.availHeight - 30 - h) / 2;// const iLeft = (window.screen.availWidth - 10 - w) / 2;const iLeft = (window.screenX || window.screenLeft || 0) + (screen.width - w) / 2;const newwindow: any = window.open(url,name,`height=${h},innerHeight=${h},width=${w},innerWidth=${w}, top=${iTop},left=${iLeft},titlebar=no, directions=no, toolbar=no, menubar=no, scrollbars=yes, resizeable=no, location=no, status=no`);return newwindow;
};/*** @description: 二进制流对应的预览格式* @param {string} data 二进制流数据* @param {string} fileType 文件类型* @return {*}*/
export const exportFileData = (data: any, fileType: string) => {const formatList = fileFormat();let type = '';let fileURL: any = '';let viewType = ''for (const key in formatList) {if (key === fileType) {type = key;}}if (['png', 'jpeg', 'gif', 'bmp', 'jfif', 'jpg'].includes(type)) {fileURL = window.URL.createObjectURL(data); // 将查出的数据转换为图片路径viewType = 'img'} else if (['txt'].includes(type)) {const blob = new Blob([data], {type: `${formatList[type]}`,});fileURL = window.URL.createObjectURL(blob);viewType = 'txt'} else if (['xls', 'xlsx', 'doc', 'docx', 'pdf', 'pptx'].includes(type)) {const blob = new Blob([data], {type: 'application/pdf;chartset=UTF-8',});fileURL = window.URL.createObjectURL(blob);viewType = 'pdf_ppt_doc_xls'} else {fileURL = '';}return {fileURL,viewType};
};/*** @description: 文档下载根据上传类型 对应下载文档的后缀*/
export const fileFormat = () => {return {xls: 'application/vnd.ms-excel',xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',doc: 'application/msword',docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',pdf: 'application/pdf',pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',png: 'image/png',gif: 'image/gif',jpeg: 'image/jpeg',jpg: 'image/jpeg',bmp: 'image/bmp',tif: 'tif',tiff: 'image/tiff',txt: 'text/plain',jfif: 'jfif',};
};
相关文章:
Vue 简版文件预览笔记
简版文件预览笔记 调用方法 <script lang"ts" setup>import {exportFileData,preViewFile,} from /xxx/tools.ts;import {fileDownload,} from /api/xxx/xx;// 预览方法const handleViewBtn () > {const filePath 获取预览地址;const urlFormat 获取预…...
数据结构--栈和队列
文章目录 栈的概念和结构栈的实现栈的数据结构栈的初始化和销毁出栈和入栈获取栈顶、大小,判空 队列的概念和结构队列的实现队列的数据结构队列的初始化和销毁队列的插入 队列的删除获取队头和队尾的数据获取队列长度和判空 栈和队列的一些题目1.有效的括号2.用队列…...
泰国的区块链和NFT市场调研
泰国的区块链和NFT市场调研 基本介绍 参考: https://zh.wikipedia.org/zh-hans/%E6%B3%B0%E5%9B%BD参考: https://hktdc.infogram.com/thsc–1h7k2303zo75v2x zz制度: 君主立宪制(议会制) 国王: 玛哈哇集拉…...
精彩回顾 | D-Day深圳 上海站:高频策略研发再提速
上周末,DolphinDB 分别在上海及深圳成功举办了两场 D-Day 分享会,来自国内头部券商、公募基金以及多家私募机构的数十位核心策略研发、数据分析专家们分享了 DolphinDB 在量化交易各个环节的使用经验,并基于与同类技术栈的优劣势对比…...
新法!《个人信息保护合规审计管理办法(征求意见稿)》解读
8月3日,依据《中华人民共和国个人信息保护法》等法律法规,国家互联网信息办公室起草了《个人信息保护合规审计管理办法(征求意见稿)》(下文简称“办法”),并向社会公开征求意见。 据悉ÿ…...
南大通用数据库-Gbase-8a-学习-37-delete误删数据恢复方法
一、前提 在delete误删数据之后,没有再对此表进行其他ddl、dml和load等操作,可以使用手动切换AB版本的方式来进行数据恢复。 二、环境 名称值CPUIntel(R) Core(TM) i5-1035G1 CPU 1.00GHz操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数…...
【高光谱图像的去噪算法】通过全变异最小化对受激拉曼光谱图像进行去噪研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
UEditorPlus v3.3.0 图片上传压缩重构,UI优化,升级基础组件
UEditor是由百度开发的所见即所得的开源富文本编辑器,基于MIT开源协议,该富文本编辑器帮助不少网站开发者解决富文本编辑器的难点。 UEditorPlus 是有 ModStart 团队基于 UEditor 二次开发的富文本编辑器,主要做了样式的定制,更符…...
百度翻译API整合SpringBoot
案例背景,按照官方给的Demo,实在是太啰嗦了, 大致步骤 封装数据>签名>发送请求, 仔细一看劈里啪啦一大堆,最后还要手动关流关连接,难道整合到SpringBoot项目里面我还得为内存管理考虑 所以就有了如下需求 使用 RestTemplate的对象进行发送请求数据,RestTemplate由s…...
Spring @Primary、@Order、JSR @Priority作用与区别
前言 Primary、Order、Priority三个注解很常见,关于它们的异同,这里做个总结。 Primary、Order、Priority Primary Spring Primary控制注入优先级。 Order Spring Order控制注入到List中的排序,值越小优先级越高,不能是负数&am…...
【Mac】mac 系统下格式化U盘或移动硬盘为ext4格式
1. 打开终端,安装 homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"2. 安装之后再次运行此命令 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"…...
ubuntu20.4 sgx环境配置
一、driver安装 1.在该下载地址将3个.bin文件下载下来,下载地址:https://download.01.org/intel-sgx/latest/linux-latest/distro/ubuntu20.04-server/ 2.到下载文件夹下输入下面命令,以赋予.bin文件的执行权限 sudo chmod 777 sgx_linux_x64…...
01.图片下拉触底分页加载每张图片
需求点分析 图片列表滚动触底的逻辑 将图片id组成的一维数组根据指定个数一组拆分为二维数组定义一个索引初始值为-1,图片列表滚动触底,索引值自增,然后将拆分好的图片id二位数组对应的数据读出来放到图片id的数组图片根据列表新增的id取读取…...
“精准学习嵌入式开发:明确目标,提升技能“
嵌入式领域涵盖广泛,不可能一次性掌握所有知识。因此,明确学习目标和方向非常重要。选择感兴趣且与职业发展相关的领域进行深入学习是明智之举。 嵌入式技术在不断发展,过去与现在存在差异。选择学习当前行业的主流技术和趋势是明智选择。掌…...
C语言--联合体-共用体
有时候同一个内存空间存放类型不同,不同类型的变量共享一块空间 像结构体,但是有区别 1、 结构体元素有各自单独空间, 共用体元素共享空间,空间大小由最大类型确定 同一块空间,有时候存放char类型、有时候存放int型&am…...
echarts实现中国地图下钻进入下一级行政区(地图钻取)
获取geo数据: 可以使用node爬虫获取数据 最好多爬几遍,因为有时候会获取错误 实现逻辑 拥有geo数据后 请求geo数据注册地图 registerMap配置echarts增加事件监听(点击事件) 如果点击了,回到第一步。功能就是循环以…...
从0到1学会手写操作系统,我只用了2个小时
黑马嵌入式教程再出力作 重磅发布第三弹 《自己动手写嵌入式操作系统》 问:嵌入式开发不是只学单片机就行?为什么要学操作系统? 答:年轻人,别把路走窄了。且听我说↓↓↓ 嵌入式产品分为两大类:一类简单…...
软件包管理
一、rpm管理软件包 1、获得rpm的软件包 1)去官网安装不推荐 找自己光盘有没有这个包 装好需要的包之后装qq 2)去镜像站点,推荐 二、yum/dnf管理软件包 解决软件的依赖关系,可以自动的去服务器下载软件包 1、使用yum软件包 使用…...
【逗老师的PMP学习笔记】9、项目资源管理
目录 一、规划资源管理1、【关键工具】责任分配矩阵RACI矩阵2、【关键工具】组织理论2.1、马斯洛需求层次理论2.2、麦格雷戈-X-Y理论2.3、赫兹伯格双因素理论 3、【关键输出】资源管理计划4、【关键输出】团队章程 二、估算活动资源1、【关键输入】资源日历 三、获取资源1、【关…...
react-virtualized可视化区域渲染的使用
介绍 github地址:https://github.com/bvaughn/react-virtualized 实例网址:react-virtualized如果体积太大,可以参考用react-window。 使用 安装: yarn add react-virtualized。在项目入口文件index.js中导入样式文件ÿ…...
别再死记硬背了!用Multisim仿真带你直观理解MOSFET放大电路的静态工作点
用Multisim仿真解锁MOSFET放大电路:静态工作点的可视化教学革命 学习模拟电子技术时,许多初学者都会在MOSFET放大电路的静态工作点分析上卡壳。那些抽象的曲线、复杂的公式和难以捉摸的"预夹断"概念,常常让人望而生畏。但今天&…...
告别臃肿!Dell G15开源散热控制神器tcc-g15完全指南
告别臃肿!Dell G15开源散热控制神器tcc-g15完全指南 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 你是否正在为Dell G15笔记本的散热问题烦恼&am…...
MTools优化升级:开启GPU加速,让AI编程和文档生成更快更稳
MTools优化升级:开启GPU加速,让AI编程和文档生成更快更稳 1. 工具升级亮点:GPU加速全面支持 MTools最新版本带来了革命性的性能提升,通过全面支持GPU加速,让AI编程和文档生成的速度和稳定性都达到了新高度。这次升级…...
RexUniNLU在电商场景实战:自动分析用户评论,提取产品属性与情感
RexUniNLU在电商场景实战:自动分析用户评论,提取产品属性与情感 1. 电商评论分析的痛点与解决方案 电商平台上每天产生海量用户评论,这些非结构化文本数据蕴含着宝贵的用户反馈。传统人工分析方式效率低下,而常规NLP方法又面临以…...
从像素到现实:5分钟搞懂OpenCV中的坐标系转换(附Python代码)
从像素到现实:5分钟搞懂OpenCV中的坐标系转换(附Python代码) 当你用手机拍下一张照片时,屏幕上那些彩色的像素点其实对应着现实世界中的三维物体。这种从二维图像到三维空间的映射关系,正是计算机视觉中最基础也最重要…...
AI开发-python-langchain框架(--AI 直接生成并执行 Python 代码 )诎
指令替换 项目需求:将加法指令替换为减法 项目目录如下 /MyProject ├── CMakeLists.txt # CMake 配置文件 ├── build/ #构建目录 │ └── test.c #测试编译代码 └── mypass2.cpp # pass 项目代码 一,测试代码示例 test.c // test.c #includ…...
AI时代的算法思维:大经典排序学习媚
引言 在现代软件开发中,性能始终是衡量应用质量的重要指标之一。无论是企业级应用、云服务还是桌面程序,性能优化都能显著提升用户体验、降低基础设施成本并增强系统的可扩展性。对于使用 C# 开发的应用程序而言,性能优化涉及多个层面&#x…...
终极指南:如何用VR-Reversal免费将3D视频转为2D播放
终极指南:如何用VR-Reversal免费将3D视频转为2D播放 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.com/gh_mirr…...
如何在5分钟内为你的Minecraft服务器添加RPG技能系统
如何在5分钟内为你的Minecraft服务器添加RPG技能系统 【免费下载链接】mcMMO The RPG Lovers Mod! 项目地址: https://gitcode.com/gh_mirrors/mc/mcMMO mcMMO为Minecraft服务器添加深度RPG技能系统,让玩家在挖矿、伐木、战斗等日常活动中获得成长体验。这款…...
不用二维码、不用车载定位,这篇论文把 AGV 视觉导航换了个思路
这篇 AGV 视觉论文很有意思:车上几乎不装定位传感器,靠“车间上方一只相机”也能导航? 摘要 这次换一篇和前面几篇都不重复的 AGV 视觉论文,不讲托盘检测、不讲叉车装卸、也不讲天花板视觉里程计,而是分析一篇很有“工…...
