使文档可以通过java / servlet下载

时间:2009-12-03 15:36:27

标签: java download document

我需要知道java / servlet中是否有办法使存储在数据库中的文档(doc,pdf)可以按要求的方式下载给用户(请参阅下文),

例如,有一个网页和其中的文档链接

现在以这种方式完成: 如果用户单击该链接而不是打开新的空白窗口,则会显示下载对话框,并且用户可以下载该文档但该空白窗口保持打开状态 并且用户必须手动关闭它

但希望这样做: 如果用户单击该链接而不是直接停留在该页面上,则应显示下载对话框,要求他们保存文件

servlet url处理文档的下载,该文档负责提取doc表单数据库并可供用户下载

感谢您的时间和精力

4 个答案:

答案 0 :(得分:3)

您需要在servlet中添加以下标头,使其成为可下载的内容,以便浏览器不会尝试显示它,

String value = "attachment;filename=\"" + URLEncoder.encode(filename, "UTF-8") +'"';
response.setHeader("Content-Disposition", value);
response.setHeader("Content-Transfer-Encoding", "binary");

文件名是建议的文件名,用户可以更改它。

答案 1 :(得分:1)

我想知道你的链接html是否有类似的东西:

<a href="/foo" **target="_blank"** ....>download</href>

否则,它应该可以正常工作。

答案 2 :(得分:0)

您需要从target="_blank"元素中删除<a>

根据您的评论

修改:您需要将Content-Disposition标题设置为attachment。您可以在此处找到simple fileservletadvanced fileservlet的示例,以获得一些见解。

答案 3 :(得分:0)

这是IE中的一个错误,它取决于几个方面,内容类型就是其中之一。几年前我们遇到了同样的问题,但我不再记得正确的解决方案了,只是我们在相当长一段时间内一直在努力解决这个问题。试试这个:

  • 使用正确的内容类型(application/pdf
  • 如果这不起作用,请使用错误的文件类型(如application/octet-stream),这应该告诉IE单独留下文件。但是,您可能会遇到文件扩展名的问题。
  • 发送或不发送正确的文件大小
  • 检查您正在使用的分块模式。

其中一件事让IE表现得很好。祝你好运。