前端axios请求二进制数据流转换生成PDF文件空白问题(终极解决方案)
本文章共1570字,预计阅读时间1 - 3分钟。
问题场景:
axios请求二进制数据转换生成PDF空白问题,使用axios请求后端接口,后端返回的二进制流文件,需要转换成PDF,但是在postman中直接保存文件是可以打开的;
问题描述:
请求后端接口 => 转换PDF文件 代码:
import axios from '@public/axios' // 引入封装的axios
// 请求方法如下
reqExcel: reqData =>
axios.get(`api/export`, reqData, { responseType: 'arraybuffer' }).then(res => res)
// 转换pdf
const blob = new Blob([res.data], { type: 'application/pdf' });
const url = window.URL.createObjectURL(blob);
window.open(url)
弹出出窗口打开转换之后的PDF文件为空白状态 !
原因分析:
问题分析1:responseType类型
一般二进制参数有两种:
- "arraybuffer" => response 是一个包含二进制数据的 JavaScript ArrayBuffer。
- "blob" => response 是一个包含二进制数据的 Blob 对象。
这里要根据后端返回的数据类型,更换参数!
问题分析2: axios封装问题
更换了各种responseType的类型,使用了各种PDF生产方法,打开的一直是空白状态,网上找了各种教程,一直没有好的解决方法。
这时候我怀疑起了axios的问题,如上代码,在使用axios之前,我们对其进行了各种错误的拦截、请求头加入token、判断错误码等等一系列的操作,然后引入axios。
没错,答案就在这里,如果你究极一切方法都没有解决PDF空白问题,那么一定是你axios封装的一些问题,这时候你直接 import axios from 'axios' // 引入原生的axios,不作封装处理 ,
问题迎刃而解!
解决方案:
使用原生的axios,不做封装处理,更改responseType类型为 blob
import axios from 'axios' // 引入原生的axios,不作封装处理
await axios({
method: 'GET',
headers: { token },
url: `api/export`,
params: { discountPrint },
responseType: 'blob' // 更改responseType类型为 blob
}).then(res => {
data = res
}).catch(err => {
console.log(err)
})
// 转换pdf
const blob = new Blob([res.data], { type: 'application/pdf' });
const url = window.URL.createObjectURL(blob);
window.open(url)
至此,弹出出窗口打开的PDF文件为正常状态 问题解决!
结尾
好了,以上就是本篇全部文章内容啦。
如果遇到问题或者有其他意见可以在下方评论区贴出!
码字不易。如果觉得本篇文章对你有帮助的话,希望你可以留言点赞支持一下,非常感谢~
只要有树叶飞舞的地方,火就会燃烧,火的影子照耀着村子,新的树叶就会发芽。
前端axios请求二进制数据流转换生成PDF文件空白问题(终极解决方案)的更多相关文章
- 前端生成pdf文件之pdfmake.js
转载:点击查看原文 pdfmake.js是一个简单的生成pdf文件的插件. pdfmake.js https://files.cnblogs.com/files/s313139232/pdfm ...
- Itext生成pdf文件
来源:https://my.oschina.net/lujianing/blog/894365 1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中转账的电子回单,签约的电子合同等. ...
- wkhtmltopdf+itext实现html生成pdf文件的打印下载(适用于linux及windows)
目中遇到个根据html转Java的功能,在java中我们itext可以快速的实现pdf打印下载的功能,在itext中我们一般有以下三中方式实现 配置pdf模板,通过Adobe Acrobat 来设置域 ...
- [轉載]史上最强php生成pdf文件,html转pdf文件方法
之前有个客户需要把一些html页面生成pdf文件,然后我就找一些用php把html页面围成pdf文件的类.方法是可谓是找了很多很多,什么html2pdf,pdflib,FPDF这些都试过了,但是都没有 ...
- 怎么用PHP在HTML中生成PDF文件
原文:Generate PDF from html using PHP 译文:使用PHP在html中生成PDF 译者:dwqs 利用PHP编码生成PDF文件是一个非常耗时的工作.在早期,开发者使用PH ...
- 史上最强php生成pdf文件,html转pdf文件方法
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- java调用wkhtmltopdf生成pdf文件,美观,省事
最近项目需要导出企业风险报告,文件格式为pdf,于是搜了一大批文章都是什么Jasper Report,iText ,flying sauser ,都尝试了一遍,感觉不是我想要的效果, 需要自己调整好多 ...
- OpenOffice将MS docx转换成pdf文件偶数页眉不显示问题解决办法
OpenOffice版本:4.0(Windows.Linux下测试都出现问题) MS Office版本:2007 问题描述 使用OpenOffice将MS的docx文件转换为pdf文件时,docx文件 ...
- 使用abcpdf将html转换成pdf文件
ABCpdf.NET使用介绍 最新做一个项目需要生成pdf文档以供打印,研究决定使用abcpdf这款组件,先针对其使用方法做一个简单的总结介绍以给有需要的朋友做参考. 一. ABCpdf.NET简单介 ...
随机推荐
- 【递归+树】FBI树
题目描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为BB串,全"1"串称为I串,既含"0& ...
- WebAssembly正逐渐成为FaaS的主力
相信很多人都知道PaaS(平台即服务)和IaaS(基础设施即服务).而随着云计算时代的发展,逐渐出现了大量的XaaS形式的概念,这些技术从原先的硬件服务器,虚拟化服务,再到容器化逐渐转变.使得软件发布 ...
- odoo里的开发案例
1.模块命名[驼峰命名方法] res开头的是:resources 常见模型:res.users, res.company, res.partner, res.config.setti ...
- 在Windows7/8/10 64位操作系统下安装并注册ocx控件
例如: 先网上下载一个MtbLine.ocx控件放入C:\Windows\SysWOW64\目录下 1.首先确保你的 Windows7 账户是管理员权限 2.下载MtbLine.ocx控件,网上可搜到 ...
- 使用JavaMailSender 发送邮件
使用JavaMailSender 发送邮件 package com.juvenxu.mvnbook.account.email; import javax.mail.MessagingExceptio ...
- sessionfilter中的拦截项判断
- 入门Kubernetes-数据存储
一.Volume介绍: 在k8s中Pod的生命周期可能很短,会被频繁地销毁和创建.容器销毁时,保存在容器内部文件系统中的数据都会被清除. 为了持久化保存容器数据,k8s 提供了卷(Volume)的抽象 ...
- Intouch/ifix关于语音报警的一种设置思路
工控项目最近升级改造,需要使用Intouch/ifix提供一个语音报警功能.这个不像先前提供的单一的声音报警,业主方要求能详细的提供某某水泵或者是某某设备故障报警,这就要求我们这边对语音解析或者基础控 ...
- .NET 6 预览版 5 发布
很高兴.NET 6 预览版5终于跟大家见面了.我们现在正处于.NET 6 的后半部分,开始整合一些重要的功能. 例如.NET SDK 工作负载,它是我们.NET 统一愿景的基础,可以支持更多类型的应用 ...
- SpringBoot-表单验证-统一异常处理-自定义验证信息源
1. 简介 我们都知道前台的验证只是为了满足界面的友好性.客户体验性等等.但是如果仅靠前端进行数据合法性校验,是远远不够的.因为非法用户可能会直接从客户端获取到请求地址进行非法请求,所以后台的校验是必 ...
