# Fileupload (und Weiterverarbeitung mit Servlet) klappt nicht mangels Dateipfad



## programmiererin (1. Aug 2009)

Hallo,
ich bin dabei, eine webanwendung mit javaservlets, html- und jsp-seiten zu programmieren.
ich würde gerne einen file-upload realisieren, um dann den inhalt der hochgeladenen excel-datei in eine datenbank einzufügen.
bisher habe ich eine html-seite mit einem formular <form action="meinjavaservlet" method="post"> <input type="file" ... 
jedoch wird als value nur der dateiname, aber nicht der vollständige pfad als parameter übergeben. der nächste schritt, mit dem dateipfad eine java-workbook-instanz zu erstellen, klappt nicht, da er die datei nicht findet.
ich habe schon gelesen, dass das an den sicherheitseinstellungen von firefox 3 liegt, dass nicht der gesamte dateipfad mitgesendet wird.

wie kann ich den dateipfad ermitteln? oder könnte ich den dateiupload anders realisieren?

habe mir schon einen tag darüber den kopf zerbrochen und würde mich sehr über lösungsvorschläge freuen


----------



## mvitz (1. Aug 2009)

SELFHTML: HTML/XHTML / Formulare / Felder für Datei-Upload



> Beachten Sie:
> 
> Datei-Uploads funktionieren nur mit method="post". Wichtig ist außerdem, dass Sie im einleitenden <form>-Tag die Angabe enctype="multipart/form-data" notieren. Andernfalls erhalten Sie lediglich den Dateinamen der ausgewählten Datei übermittelt, nicht jedoch die Datei selbst.


----------



## FArt (3. Aug 2009)

giyf

FileUpload - Home


----------



## programmiererin (3. Aug 2009)

Danke für eure beiträge!
ich habe das formular jetzt geändert: <form action="meinjavaservlet" method="post" enctype = "multipart/form-data"> <input type="file" name="excelFile" accept="*.xls"/> ...
allerdings  bekomme ich die datei nicht gelesen.. hier ein codeschnippsel:

```
FileInputStream fIStream = new FileInputStream(request.getParameter("excelFile"));
Workbook workbook = Workbook.getWorkbook(fIStream);
```
Es hakt an der ersten Zeile und mit

```
FileInputStream fIStream = new FileInputStream(request.getInputStream());
```
funktioniert es auch nicht...
Kann man vielleicht den InputStream in einen FileInputStream parsen?
Ausserdem frage ich mich, welche Bibliothek für die Ecxel-Datei-Verarbeitung am besten geeignet ist: JExcel oder JDOM oder ...?


----------



## void (3. Aug 2009)

So einfach als Parameter kannst du die Datei nicht extrahieren. Wenn Du das per Hand machen willst musst du die Multipart-Requestteile parsen aber ich kann davon nur abraten. Benutze lieber fertige Lösungen, wie z.B. den Link von FArt.


----------



## programmiererin (4. Aug 2009)

ich habe jetzt die bibliothek "com" benutzt (Servlets.com | com.oreilly.servlet). da gibt es eine Klasse MultipartRequest, mit der man die Datei in ein Verzeichnis auf den Server speichern kann. Dann mit dem Pfad einen Java-File erstellen und fertig!


----------

