reactjs - 当服务器返回 gzip 文件时,如何下载文件以做出反应?
问题描述
我想从服务器下载一个 gzip 文件。我有一个返回 gzip 文件的 API。所以我必须从 React 调用那个 API 并从客户端下载 gzip 文件。
这是我调用 API 的代码:
const res = await API.get(`${baseUrl}/${advId}/${type}`, {
params: { campaign_id: id, start_date: startDate, end_date: endDate },
});
const data = res.data;
const url = URL.createObjectURL( new Blob(data));
const link = document.createElement('a');
link.href = url;
link.click();
试图将来自服务器的响应转换为 Blob。但错误是Unhandled Rejection (TypeError): Failed to construction 'Blob': 提供的值不能转换为序列。. 响应数据应该是一个 gzip 文件。
解决方案
我可以想到你可以尝试的两件事:
- 如果您使用的是 axios,请确保将 responseType 设置为 arrayBuffer
axios.get(`${baseUrl}/${advId}/${type}`, { responseType: 'arraybuffer' })
- 使用数组来创建你的 Blob,例如
new Blob([response.data])
推荐阅读
- c - MSP430 中带有 TimerA 的软件串行
- c# - C#如何找出字符串中两个不同数字的长度?
- android - 无法创建电池管理器的实例
- php - 无法显示php文件的结果,帮帮我
- java - CSAwesome 第 6.3 章
- php - PHP preg_match 函数未按预期工作
- javascript - 如何在图像上添加导航栏
- python - 如何使用 xlsxwriter 在 Excel 中创建直方图?
- hyperledger-fabric - 运行 Hyperledger Fabric 基本网络时出现问题:验证 ReadSet 时出错
- javascript - Jest mocks - 如何在测试之间恢复原始功能