javascript - 向服务器发出 JSON POST 请求,收到二进制响应(Excel 文件),如何下载?

标签 javascript jquery json excel rest

我正在尝试对向其发送 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/

相关文章:

javascript - 使用词边界求值的正则表达式

javascript - 垂直输出二维数组

javascript - JotForm 与 JQuery 冲突

javascript - 提交折叠 div 并更改 div 中的图像后的 Ajax 表单

页面中的Jquery多个幻灯片复选框

javascript - 在javascript中实现延迟

javascript - react js ,获取 sibling 或父值

javascript - Javascript 的 JSON 结构

Java HashMap 与 JSONObject

javascript - 单击某个按钮时如何向 angularjs 函数提交文本框值?