无法在axios调用中获取PDF文件数据响应-错误

s8vozzvw  于 2023-10-18  发布在  iOS
关注(0)|答案(1)|浏览(184)

我必须在我的React应用程序中预览PDF文件。
我有Axios的电话。在此调用中,

这是我的iframe调用

previewPDF = (attachment)=>{

    const config = { responseType: 'arraybuffer'
                    , responseEncoding: 'binary' 
                    , headers: {'Content-Type': 'application/json'
                                ,'Accept': 'application/pdf'
                               } 
                   };

    const url = Navigation.transactionalApiPath + apiUrls.attachmentsGetFile + '/' + attachment.Id + '/true';
      axios.get(url,config)
       .then(response => {                    
       console.log('blob - response ',response);
      })
     .catch((error) => {
        console.log(error);
        });
  }

这里是header

这里是预览-预览和响应选项卡是相同的

但是我在控制台中得到了错误

请帮助我获得响应,以便我可以在iframe中显示

lymnna71

lymnna711#

你可以试试这个我认为其他配置是多余的,只有responseType: arraybuffer可以完成这项工作。
另外,您需要将arraybuffer转换为blob,然后转换为url,因为iframe需要一个字符串。

previewPDF = (attachment)=>{

    const config = { responseType: 'arraybuffer' };

    const url = Navigation.transactionalApiPath + apiUrls.attachmentsGetFile + '/' + attachment.Id + '/true';
    
    axios.get(url,config)
     .then(response => {                    
       console.log('blob - response ',response);
       
       const blob = new Blob([response.data], { type: "application/pdf" });
       const url = URL.createObjectURL(blob);
       return url;
     })
     .catch((error) => {
       console.log(error);
      });
  }
<iframe src={this.previewPDF(attachment)}

相关问题