【发布时间】:2014-05-02 13:53:24
【问题描述】:
我有一个用于文件下载的 Java Servlet(取自本页 (Implementing a simple file download servlet) 上的示例,它通常可以正常工作,但在通过查询启动时不能正常工作。
设置工作如下: 单击按钮(输入类型提交)时,会生成一个文件并将其存储在服务器上。响应被重定向到文件下载 servlet,然后将生成的文件的内容流式传输到响应。 这工作得很好,除非通过 jQuery post 函数调用启动下载过程。
查看请求时,我能发现的唯一区别是请求的接受标头。这是 / 用于 jQuery 帖子和 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q =0.8' 用于表单提交请求。
这可能是决定性的区别吗?如果是这样,我该如何设置接受什么?
这是 js 中帖子的函数调用:
$.post("path", {
action : "action",
ids: ids.toString()
}, null, "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
这是我设置内容处置的部分:
resp.addHeader("content-disposition:",
"attachment; filename=name.csv");
【问题讨论】:
-
(取自本页示例)链接丢失
-
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName() + "\"" );我的意思是你是否已经在 servlet 中设置了上述行,然后不管它的调用框会以何种方式弹出并发生下载
-
@user3127499 我调整了这个问题,我确实设置了标题,但是由于某种原因这似乎被忽略了
-
@Pointy 谢谢,通过正常的表单请求(也通过 JS (stackoverflow.com/questions/133925/…) 它有效)如果您发表评论作为答案,我可以接受它
标签: javascript jquery servlets download