# Fileupload - Pfad?



## sonic29 (21. Jun 2012)

Hi,

versuche gerade einen Fileuploader für JSP zu erstellen. Ich nutze Apache Commons Fileupload. Im localhost über Netbeans funktioniert das Hochladen von Dateien auch wunderbar. 
Mein Problem ist nur, dass ich nicht weiß, welchen Pfad ich wählen soll, sobald das Projekt auf meinem Webserver liegt.

Als Pfad habe ich:
File path = new File(session.getServletContext().getRealPath("/") + "uploads");
Wie gesagt funktioniert das im localhost auch. Als Pfad wird mir dann so etwas ausgegeben wie:
"C:\Users\MeinPC\Documents\NetBeansProjects\fileupload\build\web\uploads"  

Sobald das Projekt allerdings im WAR File Format auf meinem Webserver, also online, liegt, bekomme ich mit demselben Code ausgegeben:
"nulluploads" 

Als Alternative dazu hatte ich online auch schon einen festen Pfad ausprobiert:
File path = new File("www.meine-url.de:8080/uploads");
Jedoch auch ohne Erfolg... :noe:

Wahrscheinlich habe ich nur einen Denkfehler drin. Kann mir auch vorstellen, dass es an irgendwelchen Schreibrechten oder ähnliches liegt. :bahnhof: Kann mir wer weiterhelfen?! 

Grüße


----------



## JohannisderKaeufer (22. Jun 2012)

session.getServletContext().getRealPath("/")

kann laut api null zurückliefern und wird dies auch tun, wenn die Anwendung als war gepackt ist.

new File("www.meine-url.de:8080/uploads");

wird nichts bringen, da du einen Pfad im Dateisystem und nicht die url brauchst.

Eine Möglichkeit ist, einen Ordner "C:\uploads" anzulegen und dann im Servlet direkt drauf zugreifen

new File("C:\\uploads\"+filename);

Das anzeigen der Dateien, kann dann in einem eigenen Servlet geschehen oder man bindet das Verzeichnis C:\uploads als einen context ein.
Ein Beispiel gibt es hier zu sehen.

A programmer's blog: Map an external directory into your application directory in Tomcat

Anstelle der context-geschichte könnte man aber auch einen entsprechenden Proxy, nginx oder apache vorschalten, der bei entsprechenden Abfragen zwischen Tomcat und Uploadverzeichnis umschält.


----------



## sonic29 (22. Jun 2012)

Ich muss vielleicht noch dazu sagen, dass ich keine Möglichkeiten zur Konfiguration des Tomcat-Servers habe. Ich habe lediglich vom Anbieter Zugriff zum Webspace über FTP oder cPanel... Dorthin lade ich die WAR Datei hoch. Also habe ich keinen Zugriff auf die context.xml des Tomcat-Servers. 
Ich befürchte, dass ein "lokaler" Pfad wie folgender nicht funktioniert: 


> new File("C:\\uploads\"+filename);



Ich habe schonmal probiert das Projekt nicht als WAR-Datei hochzuladen, sondern als einfachen Netbeans-Projektordner. Dort kommt die Applikation allerdings mit den URL's durcheinander. Denn www.meine-url.de:8080/projekt/index.jsp ist dann auf einmal nur noch unter www.meine-url.de:8080/projekt/web/index.jsp erreichbar. Von den Servlets, etc. ganz zu Schweigen...


----------

