vue点击pdf文件直接在浏览器中预览文件

2023-09-22 15:03:10

好久没有更新文章了,说说为什么会有这篇文章呢,其实是应某个热线评论的要求出的,不过由于最近很长一段时间没打开csdn现在才看到,所以才会导致到现在才出。在这里插入图片描述
先来看看封装完这个预览方法的使用,主打一个方便使用:

id:为文件id
name:为文件名称
ajaxDownLoadFile(id, name)

没错就是这么简单,调用这个函数传入id和name就可以实现

进入正题,我们需要怎么去封装这么个预览pdf的工具呢。

其实我们ajaxDownLoadFile这个方法的功能主要是通过传入id和name然后去实现预览pdf文件,如果不是pdf文件的话,点击后我们应该是有一个下载的功能。

实现我们说的这两个点,主要是下面这两个函数
ajaxDownLoadFile 下载文件
ajaxPrePdf预览文件

    // 下载文件
    ajaxDownLoadFile(id: string, name?: string) {
        const strRegex = '(.pdf)$' // 用于验证后缀是否是pdf
        const re = new RegExp(strRegex)
        // 如果文件名存在,同时文件为pdf
        if (name&& re.test(name.toLowerCase())) {
            return ajaxPrePdf(id)
        } else {
        //不为pdf的文件,直接请求接口下载文件
            return new Promise((resolve, reject) => {
                service.get({
                    url: XXX + id,
                    responseType: 'blob'
                }).then(res => {
                    resolve(res)
                }).catch(err => reject(err))

            })
        }

    },
    // 预览文件
    ajaxPrePdf(id: string) {
        return new Promise((resolve, reject) => {
            service.get({
                url: XXX + id,
                responseType: 'arraybuffer'
            }).then(res => {
                const file = new Blob([res as any], {type: 'application/pdf'})
                const fileUrl = window.URL.createObjectURL(file)
                window.open(fileUrl)
                resolve(res)
            }).catch(err => reject(err))

        })
    }

所以其实真正实现预览文件的功能的其实就是ajaxPrePdf这个函数。

我们通过封装的方式,让这个方法可以在我们整个项目中使用,甚至其他项目需要到pdf预览其他文件下载的功能,我们也可以直接拿过去用。主打一个简单实用。

更多推荐

多频超声波清洗机有什么特点?使用需要注意什么?

多频超声波清洗机是指具备多个频率可调的超声波发生器的清洗机,是在一只清洗槽内,安装有两种或三种以上不同频率的超声波换能器,由多只发生器分别推动各自频率的超声波进行清洗。传统的超声波清洗机通常只能在固定的频率下工作,而多频超声波清洗机具有更广泛的应用能力。梵英超声(fanyingsonic)是专业超声波设备制造商,推荐使

Springboot整合ElasticSearch(1)- 环境搭建 -非自动注入的方式

Springboot整合ElasticSearch(1)1、基本信息1、SpringBoot版本:2.7.14<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><ve

零基础Linux_6(开发工具_下)函数库链接+Makefile+实现进度条+Git

目录1.函数库(链接)1.1链接1.2动态库与静态库2.makefile2.1项目构建2.2Makefile的概念2.3Makefile的编写2.4.PHONY定义伪目标ACM时间3.实现进度条(缓冲区)3.1缓冲区的概念3.2实现一个简易"进度条"4.版本控制器Git4.1Git的概念和准备工作4.2git三板斧4.

AI写作宝-为什么要使用写作宝

写作一直是一项需要创造力和思考的任务,人工智能(AI)正逐渐成为我们写作过程中的一位新伙伴。AI写作宝等在线AI写作工具正日益普及,为我们提供了更多的写作选择和可能性。AI写作宝:什么是它们,以及它们能做什么?AI写作宝是一种基于人工智能技术的在线工具,旨在帮助用户生成各种类型的文字内容。它们可以根据用户输入的关键词、

【OS】操作系统课程笔记 第四章 中断和处理机调度

什么是调度?调度就是采用特定算法,安排多个作业或进程运行。4.1中断中断对于操作系统的五个作用:(可能考简答题)实现多道程序设计与并发的基础解决主机与外设的并行工作问题具备控制和管理计算机,提高可靠性实现多机联系实现分时、实时控制等4.1.1中断和指令周期中断响应的三个步骤:终止当前程序执行保存断点信息转到相应的中断处

黑马JVM总结(九)

(1)StringTable_调优1我们知道StringTable底层是一个哈希表,哈希表的性能是跟它的大小相关的,如果哈希表这个桶的个数比较多,元素相对分散,哈希碰撞的几率就会减少,查找的速度较快,反之桶的个数较少,碰撞的几率增高,导致我的链表较长,查找的效率受到影响调优呢主要是调整HashTable桶的个数:时间还

【演讲干货满满】共话数智转型之路:斯歌应邀出席2023德莱维数字技术行业峰会

前不久,2023德莱维数字技术行业峰会在苏州隆重启幕。峰会聚焦“数智转型,融合发展”主题,云集各路大咖,旨在从多元行业、技术维度探索企业数字化发展的革新之道。上海斯歌应邀出席峰会,并于现场进行了《为企业打造更敏捷强壮的“神经网络”》主题演讲,向来自各领域的资深技术专家、行业领袖们分享了BPM领域的前沿洞察与最佳实践,为

Moment.js 处理日期库

文章目录Moment.js是什么Moment.js使用:安装和引入Moment.js:在vue项目中使用Moment.js的基本用法:Moment.js的常用方法示例:总结Moment.js是什么Moment.js是一个轻量级的日期处理库,它提供了一套简单而强大的API,使得在JavaScript中处理日期和时间变得非

通过Power Platform自定义D365 CE 业务需求 - 9. 使用PowerApps自定义

PowerApps提供了许多自定义组件,因此您可以根据业务需求进行自定义。可以为Dynamics365PowerApps开发以下自定义组件:客户端脚本(JavaScript)服务器端代码(插件)服务器端代码(自定义工作流活动)编辑命令栏在Power应用程序中使用客户端JavaScriptMicrosoftDynamic

父域 Cookie实现sso单点登录

单点登录(SingleSignOn,SSO)是指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的应用系统。Cookie的作用域由domain属性和path属性共同决定。在Tomcat中,domain属性默认为当前域的域名/IP地址。path属性的有效值是以“/”开头的路径,在Tomcat中,p

性能测试 —— 性能测试常见的测试指标 !

一、什么是性能测试先看下百度百科对它的定义,性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。我们可以认为性能测试是:通过在测试环境下对系统或构件的性能进行探测,用以验证在生产环境下系统性能是否达到预估的性能需求,发现系统可能存在的性能瓶颈,进而改善优化并系统的性能,提高系

热文推荐