Downloads in Servlets



  • Hallo Forum,
    ich möchte in einem Servlet in der service()-Methode einen Download starten und zwar nicht über eine generierte HTML-Seite, sondern durch eine entsprechende HttpServletResponse (oder wie es halt sonst geht).

    Was ich meine, sieht in PHP übrigens so aus:
    header(location: $Dateiname)



  • Hallo,
    so gehts:

    [java]
    public void service(HttpServletRequest MyRequest, HttpServletResponse MyResponse) throws ServletException, IOException {
    final int BUFFER_SIZE = 4096;

    String tmpFileName = MyRequest.getParameter("file_name");

    File tmpDownloadFile = new File(tmpFileName);

    if(tmpDownloadFile != null){
    byte tmpBuffer[] = new byte[BUFFER_SIZE];
    int tmpLength;

    BufferedInputStream tmpBufferedInputStream = new BufferedInputStream(new FileInputStream(tmpFileName ));
    ServletOutputStream tmpOutputStream = MyResponse.getOutputStream();

    MyResponse.setContentType("application/x-msproject");
    MyResponse.setHeader("Content-disposition", "attachment;filename='" + tmpFileName + "';");
    MyResponse.setHeader("Cache-Control", "no-cache");

    while((tmpLength = tmpBufferedInputStream.read(tmpBuffer, 0, BUFFER_SIZE)) != -1){
    tmpOutputStream.write(tmpBuffer, 0, tmpLength);
    }

    tmpBufferedInputStream.close();
    tmpOutputStream.flush();
    tmpOutputStream.close();
    }
    }[/code]

    [ Dieser Beitrag wurde am 10.06.2002 um 07:37 Uhr von Titus editiert. ]



  • Na das ist doch etwas für die FAQ-Liste 🙂


Anmelden zum Antworten