# Struts 1.1 download einer Datei



## SaschaLR (16. Nov 2005)

Hallo liebe Leute!
Falls ich die antwort bei meiner Suche übersehen habe sorry im Voraus 

Ich möchte mit Struts 1.1 auf einer Action heraus eine .pdf zurückliefern. Ich habe gesehen, dass es ab 1.2.6 dazu eine DownloadAction gibt ... aber, wie wurde sowas zuvor gemacht?

Momentan gebe ich die .pdf mit response.sendRedirect("name.pdf"); an den Browser ... aber ich habe das Gefühl es geht auch besser ... Strutsspezifischer. 

Kann mir da jemand sagen, wie das "vernünftig" gelöst wird? 

Und bitte ... nur die Frage beantworten und nicht drum-herum, ok? 

Dank und Gruß,
Sascha


----------



## mlange8801 (16. Nov 2005)

Wenn Du null in deiner action zurück gibst  kannste direkt zum Browser schreiben...

```
package biz.techmag.action;
import org.apache.struts.action.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletOutputStream;

public class FileDownloadAction extends Action{
  static private final int TIMEOUT = 600;

  public ActionForward execute(ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response) throws Exception {
    String name = Long.parseLong(request.getParameter("fileName"));
    //Get the file from disk or database here
    //int fileSize =
    //String fileName =
    response.setContentLength( fileSize);
    response.setContentType("application/x-file-download");
    response.setHeader("Content-disposition",
             "attachment; filename="
              + fileName);
    response.setHeader("Cache-Control",
             "max-age=" + TIMEOUT);
    ServletOutputStream outStream = response.getOutputStream();

    //write the file contents into output stream

    outStream.flush();
    return null;
  }
}
```

aus http://www.techmag.biz/struts_upload_download_files


----------



## SaschaLR (17. Nov 2005)

Hey! Danke! An sich fnktioniert das sehr gut! Genau was ich gebraucht habe!

Nur leider hat sich ein viel grundlegenderes, und peinlicheres, Problem ergeben! Ich bekomme immer eine FileNotFoundException! Irgendwie muss ich zu doof sein!

Ich versuche File f = new File("/files/file.pdf");
oder
FileInputStream is = new FileInputStream("/files/file.pdf");

Und zu finden ist die Datei in myProject/files/file.pdf 

Kannst du mri noch einen Tipp dazu geben? 

Gruß Sascha


----------



## mlange8801 (17. Nov 2005)

> Ich versuche File f = new File("/files/file.pdf");
> oder
> FileInputStream is = new FileInputStream("/files/file.pdf");
> 
> Und zu finden ist die Datei in myProject/files/file.pdf



Default mäßig ist der Documentroot System.getProperty("user.dir");


In der Action kannst Du den Pfad zu Deiner webapplikation bzw. Deinem files Verzeichnis mit:
String path = servlet.getServletContext( ).getRealPath("/") + "files/";
auslesen...


----------



## SaschaLR (17. Nov 2005)

Vielen Dank!


----------

