若依分离版,前端预览PDF

该文章已生成可运行项目,

项目技术栈:若依分离版 前端vue2+   gofastdfs

需求:用户上传pdf格式文件后,供同部门人员预览

缺点:请求拿到整个数据,才能渲染, 比较耗内存.

优点:不用写服务端的代码.直接前端就可以搞定. 

实现思路:直接读取写入到数据库的文件下载地址,写在iframe中,会触发自动下载,搜索其他同行的处理方式,大部分都是PDF.js,看了实现代码,还得转码,生成canvas,交给PDF.js渲染, 对于大文件来说,体验很差.我的解决方案是:axios请求BLOB,写入到iframe,自测发现时间也很长, 但点开一次后,再点第二次会秒开.优化代码添加了判定逻辑. 将结果储存到一个对象中,每次预览时,判断对象中是否有对应的结果,有的话,直接渲染,没有的话,就走请求.请求完成之前会让窗口处于loadding状态, 加载完成后,直接关闭.代码如下:

<template>
    <el-dialog :title="title" :visible.sync="isPreview" width="85%" append-to-body                         class="resource_dialog"
                   :close-on-click-modal="false" v-loading="loading"
                   :element-loading-text="'拼命加载中,进度:' + loadingProgress + '%'"
                   element-loading-spinner="el-icon-loading"
                   element-loading-background="rgba(0, 0, 0, 0.8)">
          <div class="resource_cont">
            <iframe :src="previewSrc" frameborde
本文章已经生成可运行项目
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值