我正在尝试对向其发送 JSON 数据的服务器进行 POST 调用。服务器获取 JSON 数据,进行一些处理,然后发回 Excel .xlsx 作为响应。我希望浏览器打开“文件另存为”对话框供用户保存。我一直在寻找一个干净的解决方案来做到这一点。但是这个问题的一个可能的解决方案JavaScript/jQuery to download file via POST with JSON data建议将Excel文件保存在服务器上,然后发回一个URL链接,然后打开一个iframe供用户下载。这对我来说是不行的,因为用户可以在服务器上创建数千个 Excel 文件,而服务器的保存空间有限。我希望解决方案是即时的。我看到的另一种解决方案建议将数据转换为表单,然后使用表单提交。同样,这是不行的,因为我的数据在数百甚至数千个 Excel 行的范围内。
我的 jQuery POST 调用:
$.ajax({ type: 'POST', url: '/server/path', data: JSON.stringify(dataSent), processData: false, success: function(data, textStatus, jqXHR) { }, error: function(result, status, err) { }, contentType: 'application/json', dataType: 'application/vnd.ms-excel' });
在后端我设置了这个:
Response.header("Content-Type", "application/vnd.ms-excel")
Response.header("Content-Disposition", "attachment; filename=\"export.xlsx\"")
强制浏览器打开“将文件另存为...”对话框的最佳方法是什么?
谢谢,
最佳答案
我不确定是否有办法通过 JS 接收二进制数据,然后开始下载。
如果我负责此任务,我会将方法更改为 GET 并生成文件(作为流)并使用适当的 header (Content-Disposition、Content-Length、Content-Type)返回它
关于javascript - 向服务器发出 JSON POST 请求,收到二进制响应(Excel 文件),如何下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21669604/