您好我尝试了以下java代码,如果我将它们用作Java应用程序,但是当我在我的servlet页面中使用相同的代码时,它们不工作意味着我无法下载文件。请建议我应该做哪些更改,以便我可以使用Servlet下载文件。
一个。
java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL("http://169.254.174.150:8084/WebApplication1/files/check.txt").openStream());
File f1 = new File("D:\\a.txt");
java.io.FileOutputStream fos = new java.io.FileOutputStream(f1);
java.io.BufferedOutputStream bout = new BufferedOutputStream(fos, 1024);
byte data[] = new byte[1024];
while (in.read(data, 0, 1024) >= 0) {
bout.write(data);
}
bout.close();
in.close();
}
湾http://www.javabeat.net/examples/2012/04/13/download-file-from-http-https-server-using-java/
答案 0 :(得分:0)
可以找到一个较旧的JavaBeat示例,例如您指定的示例here
我也找到了其他解决方案,但这似乎是最全面的。
答案 1 :(得分:0)
一些事情,将它写入文件的内容尝试将数据直接写入响应。在写入数据之前,您必须将以下参数设置为响应
//byte[] filedata = ; intialize your file contents
String filename = "a.txt";
// set the header information in the response.
res.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\";");
res.setContentType("application/x-unknown");
ByteArrayInputStream byteStream = new ByteArrayInputStream(filedata);
BufferedInputStream bufStream = new BufferedInputStream(byteStream);
ServletOutputStream responseOutputStream = res.getOutputStream();
int data = bufStream.read();
while (data != -1)
{
responseOutputStream.write(data);
data = bufStream.read();
}
bufStream.close();
responseOutputStream.close();
其中res是HttpServletResponse对象。在此之后,您可以将数据写入responseOutputStream。