Firefox,如何提交表单触发文件下载,但停留在网页上



我希望我的网页用户能够根据一些输入数据下载文件。这个输入数据可能相当大,因此不能通过GET请求。相反,我选择了POST请求,通过创建一个以下载url作为操作和方法POST的表单。表单一提交,文件就会被下载。

这在IE、Edge、Safari和Chrome中运行得非常好,但在Firefox中,表单所在的页面实际上被清除了。下载仍在进行中,但如果用户愿意,必须重新加载页面才能进行新的下载。

我可以想象这是依赖于浏览器的,可能是正常的行为,因为我们实际上是在触发浏览器加载另一个页面,但我仍然在寻找一种方法,让Firefox表现得像其他浏览器一样,例如,只下载文件,同时保持原始页面不变。

文件下载url实际上是一个Java HttpServlet,它将字节写入响应的输出流。响应包含i.m.o.正确的标头:

  • 内容处置:"附件;filename=file.ext"
  • 内容长度:"5352"
  • 内容类型:"应用程序/八位字节流;字符集=UTF-8"(也尝试使用text/plain和text/xml)

在发布这篇文章后,我认为向谷歌描述我的问题的最佳方式是"提交表单并保持在同一页面上",这让我想到了这个StackOverflow问题和有效的答案。

最新更新