繁体   English   中英

如何用Java提供本地PDF文件的下载?

[英]How to offer download of local PDF file in Java?

我让JBoss作为应用程序服务器运行,并且在HD上的某个地方有一个PDF文件,该文件是在用户单击特定操作时创建的。 假设文件位于: C:/PDF/doonot/10.07.2012/doonot.pdf 我如何提供此文件作为下载? 我已经为CSV文件完成了此操作,但是我不知道如何使用PDF进行操作。

任何帮助深表感谢。

就像我写的那样, 有没有一种通用的方法可以在jsp中下载所有类型的文件?

您可以使用以下方式:

public HttpServletResponse getFile (HttpServletRequest request ,HttpServletResponse httpServletResponse, .......){
          HttpServletResponse response = httpServletResponse;
          InputStream in =/*HERE YOU READ YOUR FILE AS BinaryStream*/

          String filename = "";
          String agent = request.getHeader("USER-AGENT");
          if (agent != null && agent.indexOf("MSIE") != -1)
          {
            filename = URLEncoder.encode(/*THIS IS THE FILENAME SHOWN TO THE USER*/, "UTF8");
            response.setContentType("application/x-download");
            response.setHeader("Content-Disposition","attachment;filename=" + filename);
          }
          else if ( agent != null && agent.indexOf("Mozilla") != -1)
          {
            response.setCharacterEncoding("UTF-8");
            filename = MimeUtility.encodeText(/*THIS IS THE FILENAME SHOWN TO THE USER*/, "UTF8", "B");
            response.setContentType("application/force-download");
            response.addHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
          }


          BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
          byte by[] = new byte[32768];
          int index = in.read(by, 0, 32768);
          while (index != -1) {
              out.write(by, 0, index);
              index = in.read(by, 0, 32768);
          }
          out.flush();

          return response;
}

更新:

不要忘记您可以使用InputStream这样:

// read local file into InputStream
InputStream inputStream = new FileInputStream("c:\\SOMEFILE.xml");

或者你甚至可以像这样使用它

//read from database
Blob blob = rs.getBlob(1);
InputStream in = blob.getBinaryStream();

您只需编写一个servlet即可读取pdf并将其写入响应输出流。

此处的示例: http : //www.java-forums.org/blogs/servlet/668-how-write-servlet-sends-file-user-download.html

是的,古斯塔夫是对的。 Java不会区分文件类型。 一个文件就是一个文件,如果您对csv进行过处理,则对pdf也应适用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM