【问题标题】:How to link to pdf as file with Java如何使用Java链接到pdf作为文件
【发布时间】:2011-03-09 03:15:12
【问题描述】:

在 Java/.jsp 中有没有办法设置内容类型等...以便指向 pdf 的链接提示用户保存它,而不是在浏览器的相同或不同窗口中打开它?我已经看到了一些如何在 PHP 中执行此操作的示例,但在 Java 中没有。

不确定编译语言与解释语言是否与我找不到 Java 解决方案的原因有关。 (胡思乱想)

【问题讨论】:

    标签: java jsp pdf


    【解决方案1】:

    您需要设置 Content-TypeContent-Disposition 标头。假设response 是一个HttpServletResponse 对象,

    String filename = "foo.pdf";
    
    response.setHeader("Content-Type", "application/pdf");
    response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
    

    更多信息:The BalusC Code: FileServlet

    【讨论】:

    • 这是一个很好的开始。是的,我通过链接强制将“另存为”保存为 pdf。我现在遇到的问题是我不知道如何设置路径。我将pdf存储在war文件之外的网络服务器上的单独文件夹中,需要导航到该文件夹​​以加载它。
    • @Chad:如何设置哪个路径?文件在浏览器计算机上的保存路径?你无法控制它。
    • pdf 驻留在服务器上的路径。在 Tomcat 的 webapps 文件夹中,我有我的应用程序的 war 文件以及一个用于下载文件的文件夹。如何指定要在该文件夹中查找?即“/downloads/sample.pdf”
    • @Chad:你会使用InputStream input = getClass().getResourceAsStream("downloads/sample.pdf") 之类的东西,但我不能说 PDF 的确切路径是什么,因为我不知道你的目录结构。
    【解决方案2】:

    如果 PDF 不是由 servlet 自动生成或从外部位置读取,而是仅存在于公共 web 内容中,则只需将Filter 映射到*.pdf 的 URL 模式(或更具体/ generic) 在doFilter() 方法中完成以下工作。

    HttpServletRequest req = (HttpServletRequest) request;
    HttpServletResponse res = (HttpServletResponse) response;
    String filename = req.getRequestURI().substring(req.getRequestURI().lastIndexOf('/') + 1);
    res.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
    chain.doFilter(request, response);
    

    【讨论】:

      【解决方案3】:

      你想设置一个Content-disposition 标头

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-09
        • 2014-10-19
        • 1970-01-01
        • 1970-01-01
        • 2020-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多