前端JS获取PDF文件流,将blob对象转换成下载链接打开后一篇空白的问题

 

重点来了大家不要踩坑:这种一般都是格式问题,要在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' }

      这下跳转就正常了:

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值