Vue中接收二进制文件流如何实现pdf预览
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要讲解了"Vue中接收二进制文件流如何实现pdf预览",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Vue中接收二进制文件流如何实现pdf预览
千家信息网最后更新 2025年01月23日Vue中接收二进制文件流如何实现pdf预览后台Controller
前台接收
这篇文章主要讲解了"Vue中接收二进制文件流如何实现pdf预览",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Vue中接收二进制文件流如何实现pdf预览"吧!
后台Controller
@RequestMapping("/getPDFStream")@ResponseBodypublic void getPDFStream(HttpServletRequest request,HttpServletResponse response) { try { request.setCharacterEncoding("utf-8"); } catch (UnsupportedEncodingException e) { logger.error("设置字符集UnsupportedEncodingException"); } String fileName = request.getParameter("fileName"); //文件路径 String filePathname = Const.UPLOAD_HBFILE_PATH + "/" + fileName + ".pdf"; File file = new File(filePathname); byte[] data = null; if (!file.exists()) { logger.error("Sorry File does not Exists!"); } else { try { FileInputStream input = new FileInputStream(file); data = new byte[input.available()]; input.read(data); response.getOutputStream().write(data); input.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); logger.error("pdf文件处理异常"); } }}
前台接收
封装axios, request.js
import axios from 'axios'/** * 封装axios异步请求的方法================== *///创建一个axios对象-----------const request = axios.create({ //baseURL:'/dev-api',//基础路径 baseURL:process.env.VUE_APP_BASE_API,//根据不同的环境,加载不同的常量值 // baseURL: '/', timeout: 50000,//请求超时,50000毫秒})//设置请求拦截器====================================//对拦截进行请求--------------------request.interceptors.request.use(config => { //请求拦截 config.data = { ...config.data, userId: sessionStorage.getItem('userId') } return config;}, error => { //出现异常 return Promise.reject(error);//es6写法});//设置响应拦截器==================================//对拦截进行响应--------------------request.interceptors.response.use(response =>{ if(!response.data||response.data==""){ return '{"flag":"failure","msg":"未知错误"}'; } return response.data;},error =>{ return Promise.reject(error);})export default request //导出自定义创建的axios对象,供其他组件进行使用
定义方法 common.js
import request from '@/utils/request' //导入已经封装好的axios请求方式export function getPDFStream(param) { return request({ url: 'xxxxxx/getPDFStream', method: 'post', //传递参数 data: param, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, responseType: 'blob', transformRequest: function(obj) { var str = []; for (var p in obj) str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); return str.join("&"); }, })}
页面代码
//导入方法import {getPDFStream} from "@/api/common";//定义datalookPdfFile:false,//预览pdfpdfUrl:'',// pdf路径
关键代码(获取文件名称后调用getPDFStream方法获取文件流)
let _this = this; if(suffix == 'pdf'){ getPDFStream({ fileName: filename, }).then(res => { let reader = new window.FileReader(); // 使用readAsArrayBuffer读取文件, result属性中将包含一个 ArrayBuffer 对象以表示所读取文件的数据 reader.readAsArrayBuffer(res); reader.onload = function(e) { const result = e.target.result const contentType = res.type // 生成blob图片,需要参数(字节数组, 文件类型) const blob = new Blob([result], { type: 'application/pdf' }) // 使用 Blob 创建一个指向类型化数组的URL, URL.createObjectURL是new Blob文件的方法,可以生成一个普通的url,可以直接使用,比如用在img.src上 if (window.createObjectURL != undefined) { // basic _this.pdfUrl = window.createObjectURL(blob)+'#toolbar=0' } else if (window.webkitURL != undefined) { // webkit or chrome try { _this.pdfUrl = window.webkitURL.createObjectURL(blob)+'#toolbar=0' } catch (error) { } } else if (window.URL != undefined) { // mozilla(firefox) try { _this.pdfUrl = window.URL.createObjectURL(blob)+'#toolbar=0' } catch (error) { } } } this.$nextTick(() => { this.lookPdfFile = true; }) }) return; }
感谢各位的阅读,以上就是"Vue中接收二进制文件流如何实现pdf预览"的内容了,经过本文的学习后,相信大家对Vue中接收二进制文件流如何实现pdf预览这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
文件
方法
二进制
对象
路径
学习
封装
不同
代码
内容
参数
数组
类型
拦截器
生成
普通
中将
关键
写法
前台
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
his系统应用服务器
通用广东虚拟主机服务器
湖北移动网络技术岗年薪
郑州欣桑互联网科技有限公司
惠普rx6600服务器配置
济源app软件开发公司
高速服务器管理助理
wind数据库数据全吗
软件开发公司的会计核算
服务器 重启 日志
excel树状结构数据库
微软资深软件开发测试工程师
服务器安装2003
win7使用的数据库类型
铁桥网络技术
建阳市软件开发公司
近五年网络安全问题
数据库查表中所有数据语句
Gps轨迹从数据库中实时查询
典型的计算机网络安全技术
蚌埠网络安全管理办
计算机网络技术三级怎么翻译
服务器搜索的邮件安全吗
高防护博彩服务器
网络安全活动主持人串词
mdb数据库模板
linuxdb2登录数据库
路北区数据网络技术答疑解惑
剪辑师和网络技术哪个好
建阳市软件开发公司