我想从服务器下载一个gzip文件。我有一个API,它返回一个gzip文件。因此,我必须从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。但错误为未处理的拒绝(TypeError(:构造"Blob"失败:无法将提供的值转换为序列。响应数据应该是一个gzip文件。
我能想到你可以尝试的两件事:
- 如果使用axios,请确保将responseType设置为arrayBuffer
axios.get(`${baseUrl}/${advId}/${type}`, { responseType: 'arraybuffer' })
- 使用数组创建Blob,例如
new Blob([response.data])