首页 > 解决方案 > 使用 JavaScript 在一个请求中通过 POST 下载文件

问题描述

有时在发出 HTTP 请求从自己的网络服务器下载文件(例如 PDF、XLSX 等)时,需要使用 HTTP 方法 POST,因为它需要动态输入数据。我一直在尝试不同的方法来将其减少到一个 HTTP 请求以获得最佳性能,但未能成功。

由于带有XMLHttpRequest 对象 (AJAX)的 JavaScript不能“下载”文件,我想它需要一个 HTML 解决方法。我为这种情况找到的唯一可行的解​​决方案是生成一个表单元素,该元素包装包含数据的输入元素。我找不到一种方法如何通过它发送布尔值,因为 AJAX 能够做到。这意味着:它不适合标准化的实现。

我的问题是:如何通过一个可以包含布尔值 (JavaScript) 的 POST 请求下载文件?

如果它很重要:我使用的后端系统是 Ruby on Rails

标签: javascripthtmlruby-on-rails

解决方案


正如@Pointy 提到的,布尔值总是在 HTTP 通信中转换为字符串。在我的问题中我错了。这意味着,将 JavaScript JSON 字符串或经典对象转换为 HTML 表单(然后提交和删除)是可行的!

实际上发送一个 AJAX 请求然后手动触发对生成文件的链接单击具有能够使用进度条的优点。


推荐阅读