如何将axios GET请求返回的二进制响应通过file-saver保存为PDF文件
解决axios GET请求下载PDF文件方案
首先纠正现有配置的错误:你当前把responseType放在了headers字段内,这是错误用法,responseType是Axios请求配置的顶层参数,需要移出headers。
完整实现步骤
- 第一步:修正Axios请求配置
const config: AxiosRequestConfig = { headers: { Accept: 'application/pdf', }, responseType: 'arraybuffer', // 移至顶层配置位 };
- 第二步:发起请求并处理响应完成下载
import axios from 'axios'; import { saveAs } from 'file-saver'; // 封装PDF下载方法 const downloadPdf = async (requestUrl: string, fileName: string = '导出文件.pdf') => { try { const res = await axios.get(requestUrl, config); // 将二进制响应转为PDF类型的Blob对象 const pdfBlob = new Blob([res.data], { type: 'application/pdf' }); // 调用saveAs触发浏览器下载 saveAs(pdfBlob, fileName); } catch (err) { // 可自行扩展错误处理逻辑 console.error('PDF下载失败', err); } }
- 额外说明:如果后端返回的响应头包含
content-disposition字段并指定了文件名,你可以从响应头中解析该文件名替换自定义的fileName参数,无需手动指定文件名。
内容的提问来源于stack exchange,提问作者Alvaro Losada
相关产品推荐
相关产品推荐

