# Datei öffnen aus JSF-Anwendung



## mister_x (16. Jun 2009)

Hallo. Ich habe folgendes Problem: Ich möchte aus meiner JSF-Seite über einen Commandlink, der die Mehtode openWord() ausführt eine Word-Datei öffnen. Es funktioniert so weit, dass ein "Öffnen mit Dialog" erscheint und ich ein Programm auswählen kann, mit dem die Datei geöffnet werden soll. Wenn ich die Datei nun mit Word öffne bekomme ich aber nur den gesamten generierten HTML-Quelltext meiner JSF-Seite ausgeben und nicht den Inhalt der Word-Datei. Was mache ich falsch?


```
public void openWord() throws IOException 
    {  
    	String path = "myfile.doc";	
    	File file = new File(path);
    	FileInputStream fis = new FileInputStream(file);
    	byte[] buffer = new byte[fis.available()];
        fis.read(buffer);
        fis.close();
        
        FacesContext context = FacesContext.getCurrentInstance();	
    	HttpServletResponse response = (HttpServletResponse)context.getExternalContext().getResponse();
    	response.setHeader("Cache-Control", "max-age=0");
	    response.setContentType("application/msword; charset=ISO-8859-1");
	    response.setHeader("Content-disposition", "attachment; filename="+path);
    	response.setContentLength(buffer.length);
    	
    	ServletOutputStream os = response.getOutputStream();
        os.write(buffer);
		os.flush();
		os.close();
    }
```


----------



## mister_x (18. Jun 2009)

Ich habe das Problem nun über ein <mime-mapping> gelöst und es funktioniert wunderbar für Word-Dokumente.
Nun möchte ich aber Dateien öffnen mit einem Programm, für das es keinen Mime-Type gibt. Wenn ich die Extension auf application/octet-stream mappe, bekomme ich im Firefox den gewünschten "Öffnen mit Dialog". Der IE stellt allerdings jedes Mal den Textinhalt der Datei im Browser selbst dar. Wenn ich in Windows diesen Dateityp mit einem Programm verknüpfe geht es auch im IE. Aber das ist so nicht gewünscht, da nicht jeder Benutzer diese Verknüpfung vornehmen müssen soll. Hat jmd eine Idee?


----------



## JanHH (19. Jun 2009)

Ich versteh nur Bahnhof. Was genau willst Du machen? Soll die Word-Datei auf dem Server oder auf dem Client liegen? Oder willst Du den Inhalt einer Webseite direkt in Word einlesen? Oder wie, oder was?

Wenn es darum geht, die erzeugte HTML-Seite direkt in ein Word-Dokument zu verwandeln, hat die gesamte Frage ja nix mit java oder Server-Sachen zu tun, sondern ist einzig und allein Client-seitiges Verhalten, was man von einer Webanwendung aus auch nur bedingt beeinflussen kann.

Du könntest evtl. mal schauen ob es als JSF-Frontend andere Renderer gibt, die die Seite nicht als HTML, sondern als PDF oder sogar direkt als Word-Dokument erzeugen. Vielleicht hilft das ja weiter.


----------



## mister_x (19. Jun 2009)

Die Word-Datei sollte auf dem Server liegen. Aber das Problem hatte ich ja schon gelöst. Das andere nun übrigens auch  Trotzdem danke


----------

