将请求中的数据(八位字节流)另存为Excel文件会导致文件损坏

时间:2019-05-29 06:53:07

标签: javascript c# asp.net-core blob

我正在使用FileContentResult(byte[], MediaTypeNames.Application.Octet, "file.xlsx"从C#API作为八位字节流返回一个Excel文件(效果很好)

然后我想从js打开下载文件提示,除了文件已损坏之外,一切都正常运行

我一直在尝试这些帖子中的各种解决方案,并且Excel文件始终会导致损坏

JavaScript: Create and save file

JavaScript blob filename without link

Create binary blob in JS

还有FileSaver.js

$.ajax({
url: url,
type: 'POST',
data: formData,
processData: false,
contentType: 'application/json',
success: function (result) 
{
    saveFile(result);
}
});

我知道该文件可以正常工作,因为当我通过Swagger测试该文件时,效果很好

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

解决方法:

返回该文件的base64,并在该页面上使用a属性创建值为{p>的href元素

data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,

然后将您的base64添加到该值,所以

'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,'+base64

然后在该链接上执行.click()

Conversion of Base64 Encoded into XSLX

您可以使用download=""属性指定文件名