javascript - 将请求中的数据(八位字节流)保存为 Excel 文件会导致文件损坏
问题描述
我正在使用 C# API 将 Excel 文件(工作正常)作为八位字节流返回FileContentResult(byte[], MediaTypeNames.Application.Octet, "file.xlsx"
然后我想从 js 打开下载文件提示,一切正常,除了文件已损坏
我一直在尝试这些帖子中的各种解决方案,而 Excel 文件总是导致损坏
并且FileSaver.js
$.ajax({
url: url,
type: 'POST',
data: formData,
processData: false,
contentType: 'application/json',
success: function (result)
{
saveFile(result);
}
});
我知道该文件工作正常,因为当我通过 Swagger 对其进行测试时,它工作正常
有任何想法吗?
解决方案
对我有用的是添加responseType: 'arraybuffer'
到ajax:
$.ajax({
url: url,
type: 'POST',
data: formData,
contentType: false,
processData: false,
xhrFields: {
responseType: 'arraybuffer'
},
success: function (data) {
const blob = new Blob([data]);
saveAs(blob, "output.xlsx");
}
});
推荐阅读
- python - 我可以让 asyncio.sleep() 睡一年吗?
- react-native - 世博苹果登录反应原生返回空值
- excel - Excel - 仅从非零“0”的列中获取值
- reactjs - React-Bootstrap:导航栏中的两个按钮分开
- java - 无法使用来自 Jhipster 的给定路由连接到 H2 数据库
- r - 改变 R plotly 雷达图中的美学
- mysql - LOAD DATA INFILE - 可选引号和逗号问题
- python - How do you compare two images in python to return a numerical difference and time elapsed?
- haskell - 了解 Data.List.Extra 库中的 groupSort 和 groupOn 函数
- javascript - HTML5脚本标签内的js代码可以工作,但不能在外部js文件中