使用servlet下载文件

时间:2012-04-25 04:40:00

标签: java file servlets download

您好我尝试了以下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/

2 个答案:

答案 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。