重点来了大家不要踩坑:这种一般都是格式问题,要在ajax方法中添加参数,确保传输的数据格式,接收到数据后也要再三确认格式:
const downloadPdf = () => {
PurchaseOrderDetailApi.downloadPdf(id).then((response) => {
const blob = response.rawRes.data
const blobob = new Blob([blob], { type:'application/pdf;charset=utf-8' });
//Convert the requested BLOB data to a downloadable URL address
let URL = window.URL || window.webkitURL;
const href = window.URL.createObjectURL(blobob);
window.open(href);
// The following code is reserved to prevent modification
// const downloadElement = document.createElement('a');
// downloadElement.href = href;
// downloadElement.download = decodeURI(fileName);
// document.body.appendChild(downloadElement);
// downloadElement.click();
// document.body.removeChild(downloadElement);
// window.URL.revokeObjectURL(href);
// const a = document.createElement('a');
// a.download = '';
// a.href = url;
// a.click();
注意postForm确认传输form表单格式
responseType:'blob'
请求API方法:
async downloadPdf(id) {
let url = '/api/purchase/purchaseOrders/downloadOrderPDF';
let param = {
responseType:'blob'
return RestClient.postForm(url, {id:id},param);
还有new Blob([blob], { type:'application/pdf;charset=utf-8' }) 加了一句:
{ type:'application/pdf;charset=utf-8' }
这下跳转就正常了:
把自测之后把代码上传
问题场景:
axios请求二进制数据转换生成PDF空白问题,使用axios请求后端接口,后端返回的二进制流文件,需要转换成PDF,但是在postman中直接保存文件是可以打开的;
问题描述:
请求后端接口 => 转换PDF文件 代码:
import axios from '@public/axios' // 引入封装的axios
// 请求方法如下
reqExcel: reqData =>
axios.get(`api/expo.
做pdf文件下载的时候,后端返回了二进制数据流,前端在发起请求时需要设置responseType: arraybuffer 或者blob类型才可以,具体操作可以看我之前的文章(传送门)。一开对接的时候下载打开都是正常的,过后突然就不行了,能下载成功,页数也是正常的,但是打开页面却都是空白的。
搜索百度了一番,都是说设置好response Type就可以了,偶然发现有人评论说不能用axios请求要用原生的Ajax请求才可以,试了一下果然成功了。
具体代码:
downloadFn() {
这个方法是通过调用服务,服务端给前端返回pdf文件流(不是字节流)。在用blob下载。貌似所有方法都是文件流下载的吧。
// 后端服务地址方法
api(id).then(res => {
let blob = new Blob([res]);
let objectUrl = URL.createObjectURL(blob);
let link = document.createElement('a');
link.download = '我的pdf文件.p.
记录一下前端下载后端返回的pdf文件流,显示空白问题。
const blob = new Blob([content.data], {
// type是需要对应的文件类型
type:
"application/pdf;chartset=UTF-8", // 这里如果是其他格式的文件,把pdf改为所下载的文件格式就可以
const fileName = "文件名.pdf";
if ("dow
昨天很郁闷,我用了5年的移动硬盘,莫名奇妙的坏掉了。里面40G的资料全部报销了。
为了不再重蹈覆辙,我决定把重要的电子书都放到网络硬盘上去备份。索性将这些资料的下载方式公布出来,与大家分享,一定会有你想要的!
下载的兄弟注意了,点击下载后,可以在url中看到后缀名:),如果
function blobToBase64(blob, callback) {
var reader = new FileReader();
reader.onload = function() {
var dataUrl = reader.result;
var base64 = dataUrl.split(',')[1];
callback(base64);
reader.readAsDataURL(blob);
你可以将图片的 Blob 对象作为参数传入该函数,然后在回调函数中获取转换后的 Base64 字符串。
CSDN-Ada助手:
记录前端JS获取PDF文件流,将blob对象转换成下载链接打开后一篇空白的问题
黄桃罐头和你:
小程序报错invalid code解决办法
工具人·:
小技巧,windows电脑上多开软件的办法
Python310:
小技巧,windows电脑上多开软件的办法
Python310: