【发布时间】:2014-09-05 01:19:48
【问题描述】:
我有一个 servlet,它有一个动作,它根据表单的 POST 中传递的参数生成一个 CSV 文件。 servlet 代码 sn-p 如下所示:
response.setContentType("text/csv");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition","attachment; filename=" + filename);
PrintWriter pw = response.getWriter();
pw.println(content); // content is some CSV in a string
pw.close();
浏览器(FF 和 Chrome)似乎忽略了附件指示符,因为它将 URL 更改为相应的操作(例如 http://myserver.com/filedownload)并且不显示另存为对话框。我检查了 Chrome 中的响应标头,它看起来像这样(编辑为现在显示完整的“未解析”标头):
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Disposition: attachment; filename=JobTracking.csv
Content-Type: text/csv;charset=UTF-8
Content-Length: 16876
Date: Tue, 15 Jul 2014 22:32:49 GMT
..“响应”选项卡显示我正在写入响应的内容。
我已经接近我的智慧了,因为我看过的所有示例都成功地做到了这一点。
【问题讨论】:
-
请发布浏览器收到的完整响应。也许发生了重定向?
-
“完整响应”是指 Chrome 开发者工具窗口中的“响应”选项卡中的内容吗?这只是将 CSV 写入响应。我已经编辑了问题以显示“未解析”的响应标头。
-
什么是请求URI,“对应的动作”是什么意思?
-
Action 表示表单中的 action 属性是什么,例如
标签: java html post attachment content-disposition