javascript - 我在从 JS 上的 API 下载 xlsx 文件时遇到问题
问题描述
我正在研究 ReactJs。我有一个按钮,可以下载从 API REST 提供的 excel 文件。问题是我从响应中读取了所有内容,然后将所有这些信息下载到一个字符串上。
但是我一直在尝试所有不同的东西,而且我总是遇到同样的问题,当我尝试在 Excel 中打开文件时,它显示一条消息说文件已损坏。这是我的代码:
export const getFilesFromApi = (path, callBack, contentType) => apiFileCalls({ path, method: 'GET', callBack, contentType: contentType || 'text/plain' });
export const apiFileCalls = ({ path, callBack, data, method, contentType, attachFiles = [], additionalHeaders = [] }) => {
debugger;
new Promise(() => {
const request = superagent(method, path);
request.set('Access-Control-Allow-Origin', '*');
if (contentType) {
request.set('Content-Type', contentType);
}
const accessToken = getCookie_accessToken();
if (accessToken) {
request.set('Authorization', `Bearer ${accessToken}`);
}
if (data) {
request.send(data);
}
additionalHeaders.forEach((header) => request.set(header.name, header.value));
attachFiles.forEach((file) => request.attach(file.fieldName, file.file));
request.query().then((res) => callBack(res.text)).catch((error) => {
if (error.status !== 401) {
callBack(true, error.response);
}
});
});
};
export const downloadFile = (content, fileName) => {
debugger;
const urlrtMP = window.URL.createObjectURL(new Blob([ content ]));
const link = document.createElement('a');
link.href = urlrtMP;
link.setAttribute('download', fileName);
link.click();
};
有什么帮助吗?非常感谢
解决方案
您必须使用 responseType('blob') 来接收 Blob 内容。
推荐阅读
- react-native - 如何实现 Uber Eats 横向菜单动画?
- c# - Linq to Entities Group By 有一些没有元素的组
- javascript - 将按钮添加到 Javascript 倒计时
- java - 如果您想要接近其尾部的元素,LinkedList 是否从末尾开始搜索?
- dart - (Flutter) 如何在不按“完成”的情况下自动监听 TextField 中的变化?
- javascript - HTA - 提交表单后如何关闭 HTA
- android - 微调器未出现在菜单栏中
- text - 与 tf idf 和 chi square 合作后我必须做什么
- angular - 根据 Angular 中的场景执行 Typescript 函数
- android - 从文件选择器获取正确的路径