我将JBoss作为应用程序服务器运行,并且我的HD上有一个PDF文件,当用户单击某个特定操作时会创建该文件。假设文件在这里:C:/PDF/doonot/10.07.2012/doonot.pdf
。我怎样才能提供这个文件作为下载?我已经做了一个CSV文件,但我不知道如何使用PDF。如何提供Java下载本地PDF文件?
任何帮助,非常感谢。
我将JBoss作为应用程序服务器运行,并且我的HD上有一个PDF文件,当用户单击某个特定操作时会创建该文件。假设文件在这里:C:/PDF/doonot/10.07.2012/doonot.pdf
。我怎样才能提供这个文件作为下载?我已经做了一个CSV文件,但我不知道如何使用PDF。如何提供Java下载本地PDF文件?
任何帮助,非常感谢。
正如我在Is there a common way to download all types of files in 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;
}
UPDATE:
不要忘记,你可以使用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();
您可以简单地编写一个读取pdf的servlet并将其写入响应输出流。
为例这里:http://www.java-forums.org/blogs/servlet/668-how-write-servlet-sends-file-user-download.html
是古斯塔夫是正确的。 Java不区分文件类型。一个文件是一个文件,如果你为csv做过,它也应该用于pdf。
不,它不。它说文件已损坏,无法修复。 – doonot 2012-07-11 11:16:10
你是如何做CSV文件? – 2012-07-11 08:44:45
您是否使用某种Web应用程序提供用于下载的文件,或者您是否像使用ftp服务器一样使用JBoss? – MaVRoSCy 2012-07-11 09:14:05
不,该文件只存储在服务器上。 – doonot 2012-07-11 11:19:36