使用javascript在一个请求中通过POST下载文件

时间:2019-03-04 23:38:16

标签: javascript html ruby-on-rails

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

实际发送AJAX请求,然后手动触发指向生成文件的链接,具有能够使用进度条的优点。