Am Server Dateien ablegen

Generic1

Top Contributor
Hi,

Ich verwende bei meiner Web- Applikation den Tomcat und kann in meiner Web - Applikation Dateien (Images, ...) zum Server hochladen. Diese Speichere ich momentan unter ${tomcat}/webapps/myFiles.

Wenn ich Tomacat neu starte ist natürlich der Ordner myFiles wieder weg und die hochgeladenen Dateien sind auch wieder weg.
Meine Frage wäre jetzt, wo ihr diese Dateien speichern würdet, es soll ja für Linux und für Windows gültig sein.

Angenommen unter Windows: kann ich diese Dateien irgendwo speichern (C:\Eigene Dateien o.ä) oder wo würdet Ihr das machen?
lg
Generic1
 
M

maki

Gast
Du könntest den Pfad in der web.xml als Servlet Init Parameter hinterlegen.
Wo dieser dann hinzeigt ist deine Entscheidung.
 

Generic1

Top Contributor
ich arbeite mit Spring 3.0, also auch mit Spring MVC, weiß vielleicht jemand ob ich da auch mit Servlet Init Parameter das machen kann?
lg
Generic1
 

Generic1

Top Contributor
OK, ich habs gerafft, einfach einen <context-param> ins web.xml und passt schon.
Ich hab leider immer noch ein Verständnisproblem, wenn ich also in der web.xml folgendes habe.

[XML]
<context-param>
<description>Path to the files (avatar) and uploaded files</description>
<param-name>fmyfiles</param-name>
<param-value>C:\MeineFiles</param-value>
</context-param>
[/XML]

und dann Files hochlade, dann landen diese in C:\MeineFiles, das passt soweit,
die Upgeloadeten Fotos möchte ich auch anzeigen können,
wenn der Client/Browser dieses html vom Server bekommt:

[XML]
<html>

<body>
<img src="C:\MeineFiles\test.JPG" alt="Das ist ein Image" />
</body>
</html>
[/XML]

schaut dann der Browser local auf dem Rechner nach C:\Meine... nach oder am Server bzw. wie kann man das machen?
Vielen Dank,
lg
 

FArt

Top Contributor
Eine von vielen Möglichkeiten:
Du musst die physikalische Stelle auf eine URL mappen. Diese könnte ein Servlet bedienen, welches dann auf Serverseite wieder Zugriff hat.
 

Generic1

Top Contributor
Eine von vielen Möglichkeiten:
Du musst die physikalische Stelle auf eine URL mappen. Diese könnte ein Servlet bedienen, welches dann auf Serverseite wieder Zugriff hat.

Wie meinst du das >> die physikalische Stelle auf eine URL mappen << ?
d.h. ich hab z.B.: ein png in C:\MeineFiles\test.png und diesen Pfad muss ich mappen, wie geht sowas?
Vielleicht kannst du das für einen Dummy wie mich erklären, ich hab in dieser Hinsicht keine Erfahrung.
 
M

maki

Gast
FArt meint ein sog. "Stream Servlet", hatten wir öfters hier im Forum, kommt imer in diesem Zusammenhang auf.

Wenn es sich nicht um größere Datenmengen handelt ist nocturnes Vorschlag auch einen Überlegung wert, hättest dann auch gleichzeitig Transaktionssicherheit und Referenzielle Integrität.

Content Repositories wie JackRabbit wären auch eine Alternative.
 

Generic1

Top Contributor
Ich hab jetzt ein bisschen recherchiert, aber nichts vernünftiges gefunden, ich denke mir das ist ja ein gängiger Fall, für "Stream Servlet" hab ich nicht wirklich was gefunden.
Das kann ja aber auch nicht die Lösung sein, denk ich mir, das Problem ist ja der Pfad oder hat jemand einen Link wo das erklärt ist?

Das Stream Servlet muss ja einen Pfad (z.B.: C:\MeinPfad\meinFile.xxx) irgendwie mappen, das es der Client erreicht, oder?
Und nochwas kommt dazu, ich arbeite mit Spring MVC, gibts da vielleicht einen Möglichkeit, wie man das mit Spring machen kann?

JackRappit ist glaub ich ein bisschen überdimmensioniert, ich erwarte so im Jahr ca. 200-300 neue Files

Besten Dank,
lg
 

Generic1

Top Contributor
Hi maki,

die Zeile String filename = sc.getRealPath("image.gif"); versteh ich nicht ganz. Wo ist denn image.gif gespeichert?
Vor allem, wenn ich mir so einen Root- Server nehme, kann ich dann einfach sagen, ich leg meine Bilder unter ${tomcat}/webapps/.. ab? Das geht ja gar nicht, da ich ja den Tomcat und somit auch den webapps- Ordner alleine habe.
Ich bin verblüfft dass es da nichts out of the box gibt, das braucht man in der Web-Appl- Programmierung ja alltäglich, oder?

lg
 
Zuletzt bearbeitet:

fastjack

Top Contributor
Normalerweise sieht der Tomcat alles, was in deinem "webapps" Ordner (außer WEB-INF) liegt. Diese Dateien kannst Du dann auch in HTML ansprechen.
"C:\xyz" läuft nicht in JSP/HTML. Browsermäßig wird dann auf das Verzeichnis des Clients zugegriffen, nicht gut...

Du kannst die Daten wie oben beschrieben mit einem Servlet laden und an die Client weitergeben, Du kannst aber auch eine Resourcen-WebApp machen. Die liegt neben Deiner WebApp und dort können Dateien hochgeladen und runtergeladen werden.

z.B.:

webapps/MeineApp/...
webapps/MeineResourcen/Pic1.jpg
webapps/MeineResourcen/Sound1.wav

Link von MeineApp auf webapps/MeineResourcen/Movie1.wmv :

[img src="../MeineResourcen/Pic1.jpg"/]

mußt Du mal probieren, dann sparst Du das mit den Servlets.

Vielleicht hilft virtual host weiter, ich weis es aber jetzt nicht genau.

Apache Tomcat 6.0 (6.0.35) - Virtual Hosting and Tomcat
 
M

maki

Gast
@fastjack
So eine "RessourcenWebApp" löst sein problem nciht ;)
denn auhc dort könnten die hochgeladenen Ressourcen gelöscht werden beim Serverneustart.
 
M

maki

Gast
Aber nicht durch den Neustart.
Kommt darauf an.

Wenn das war Archiv noch unter webapps liegt, wird Tomcat das entpacken und das alte löschen, samt hochgeladener Dateien ;)
Laut Spec. ist es aber ncihtmal sicher ob die WAR Datei an sich überhaupt entpackt wird und ob man dann auf den Ordner überhaupt zugriff hat... unter TC mag das schon gehen.
 

Generic1

Top Contributor
Also ich komm auf keine vernünftige Lösung auf dem Server, wenn ich da so eine Krücke wie eine Resource-war o.ä mache, da muss ich zu viel einrichten auf dem Rootserver - brauch daher support, und das kostet auch alles,

ich hab mir daher jetzt folgende Lösung überlegt: ich mach mir in meiner Applikation einen WS- Client zu der Flickr WADL und lad die Images usw. volley da rauf und hole sie mir wieder wenn ich sie brauche.
Dann kann ich die Bilder sogar extern einsehen und wenn ich eine neue war/ear deploy dann ist alles noch da was ich brauch - halt auf einem anderen Server - find ich eigentlich ziemlich genial (wenn die Netzwerkverbindung zum anderen Server steht :) )

Was sagt ihr zu dieser Lösung?


lg
Generic1
 

FArt

Top Contributor
Umständlich und nur sinnvoll, wenn man den Mehrwert benötig.

Ich verstehe nicht, was so schwer daran ist, eine Servlet-URL auf eine physikalische Datei zu mappen. Die URL http://myapp/images/xy.jpg mappt z.B. auf /myimages/xy.jpg oder c:\theimages\xy.jpg und dann werden die Daten als MIME jpg vom Servlet zum Client gestreamt.

Ich weiß ja nicht was das für Bilder sind, aber evtl. muss man datenschutzrechtliche Belange berücksichtigen. Wo stehen die Flickr-Server?
 

Generic1

Top Contributor
Ich verstehe nicht, was so schwer daran ist, eine Servlet-URL auf eine physikalische Datei zu mappen. Die URL http://myapp/images/xy.jpg mappt z.B. auf /myimages/xy.jpg oder c:\theimages\xy.jpg und dann werden die Daten als MIME jpg vom Servlet zum Client gestreamt.

Ich weiß ja nicht was das für Bilder sind, aber evtl. muss man datenschutzrechtliche Belange berücksichtigen. Wo stehen die Flickr-Server?

Was mich an dieser Lösung so stört ist, dass ich das ganze was ich bis jetzt programmiert habe wieder umschreiben kann, ich kann ja vom Client zum Server nicht nur Images sondern auch Videos hochladen.
Beim hochladen speichere ich momentan das Image einfach in einen "webapps"- Ordner und einen relativen Pfad zu dem Image und schick dann einfach den relativen Pfad an den Client zurück - Dann brauch ich nur den Pfad im Client in <img src="meinrelativerPfad" einbauen und schon wird das Image angezeigt.

Wenn ich das jetzt mit dem Streaming mache muss ich das Image wieder am Server laden/streamen und dann vom Server zum Client streamen und am Client muss ich dann den stream auch wieder bearbeiten - das Ganze funktioniert auch noch mit jQuery- ajax, was die Sache dann auch nicht gerade einfacher macht.


Wo der Flickr- Server steht muss ich zugeben, das wär mir egal - das schreib ich einfach ins Kleingedruckte.

Aber ich find das mit dem Flickr sonst eine geniale Idee, bis auf Performance- Probleme sehe ich da keine Schwierigkeiten, oder wisst ihr da was, das nicht so optimal wäre?
 

FArt

Top Contributor
Wenn ich das jetzt mit dem Streaming mache muss ich das Image wieder am Server laden/streamen und dann vom Server zum Client streamen und am Client muss ich dann den stream auch wieder bearbeiten - das Ganze funktioniert auch noch mit jQuery- ajax, was die Sache dann auch nicht gerade
Nein, das stimmt nicht. Der Client kann auch mit plain HTML arbeiten. Der Server muss die Ressourcen auch nicht erst laden, er kann sie direkt zum Client pipen.
Ich sehe sogar Vorteile darin, wenn die Ressourcen nicht direkt über den Webspace mit HTTP abrufbar sind. Das kann sich auf Sicherheitsaspekte positiv auswirken und abstrahiert den phyiskalischen Ablageort der Ressourcen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Volano Server einrichten Server einrichten und konfigurieren 4
W Schnittstelle zwischen Server und Smartwatch Server einrichten und konfigurieren 3
M Server akzeptiert neues Zertifikat nicht Server einrichten und konfigurieren 9
S Tomcat Server nicht erreichbar Server einrichten und konfigurieren 21
O Ich Suche GTA 5 RP Server Scripter für atl:V Server einrichten und konfigurieren 0
F Wie laufenden Docker Container auf Debian Server von außen über den Browser erreichen. Server einrichten und konfigurieren 3
M Keine Verbinung zu Java-Https-Server möglich (Handshake-Fail) Server einrichten und konfigurieren 7
J Eigenen Socket auf entferntem Server laufen lassen Server einrichten und konfigurieren 7
M embeddet Jetty Server mit MyFaces Howto gesucht Server einrichten und konfigurieren 0
S JRE distribution Server Server einrichten und konfigurieren 0
R Bei externem Hosting: Neben WildFly "normaler" http-Server nötig? Server einrichten und konfigurieren 3
OnDemand Virtual Server in Glassfish findet Recource nicht Server einrichten und konfigurieren 1
I JAVA EE Server mit integrierter Datenbank Server einrichten und konfigurieren 0
OnDemand Glassfish: Properties wie auf Server Server einrichten und konfigurieren 1
M Java-EJB-Anwendung auf Server bzw. Client deployen Server einrichten und konfigurieren 0
D Daten auf Apache Tomcat Server ablegen, möglich ? Server einrichten und konfigurieren 1
J Java Programm auf Linux Server Laufen lassen Server einrichten und konfigurieren 6
M Günstigen Applikation Server? Server einrichten und konfigurieren 5
K Server aufsetzen Server einrichten und konfigurieren 6
M Wo Server hosten Server einrichten und konfigurieren 9
B FTP-Server einrichten. Server einrichten und konfigurieren 10
U Normalen Apache-Http-Server und AS nebeneinander Server einrichten und konfigurieren 2
M Glassfish server rendert keine Tags Server einrichten und konfigurieren 4
V One-Shot-HTTP-Server Server einrichten und konfigurieren 6
R Multi-Server Architektur im AS (JBOSS/Glassfish) realisieren Server einrichten und konfigurieren 2
P Ortung von Usern und Umleitung an Server in GlassFish? Server einrichten und konfigurieren 7
P JBoss 7 Server log4j.jar Server einrichten und konfigurieren 10
P JBoss Server Server einrichten und konfigurieren 2
G Server Config File Server einrichten und konfigurieren 2
C [Glassfish] Entfernten Glassfish Server in Eclipse verbinden Server einrichten und konfigurieren 3
G Offener Port am Server Server einrichten und konfigurieren 17
T App Server für Ubuntu gesucht Server einrichten und konfigurieren 9
ruutaiokwu svn server auf lokalem filesystem unter windows einrichten Server einrichten und konfigurieren 14
M Hardwareempfehlung für TOMCAT Server Server einrichten und konfigurieren 8
D Probleme Installation JBoss Application Server Server einrichten und konfigurieren 5
R Spring Server für Spring-Framework notwendig? Server einrichten und konfigurieren 3
R Kann SpringSource dm-Server nicht starten Server einrichten und konfigurieren 5
P Http server Server einrichten und konfigurieren 2
G Tomcat server.xml einrichten Server einrichten und konfigurieren 1
G pendant zu globalem tomcat web.xml im ibm websphere-server Server einrichten und konfigurieren 2
C Eclipse und externer Tomcat Server Server einrichten und konfigurieren 6
C XAMPP auf 1und1 root server Server einrichten und konfigurieren 2
S Eine Frage zu log4j, jboss an sql-server (im teigmantel ;) ) Server einrichten und konfigurieren 3
J Tomcat, web.xml, server.xml -> Projektpfad Server einrichten und konfigurieren 18
P Zugriff auf Dateien ausserhalb Tomcatverzeichnis Server einrichten und konfigurieren 4
G probleme mit einbinden von css dateien Server einrichten und konfigurieren 2
P Tomcat Servelts ohne Dateien Server einrichten und konfigurieren 3
R Excel-Dateien mit Jakarta POI-HSSF lesen Server einrichten und konfigurieren 6
D Tomcat context.xml wo ablegen im Projekt? Server einrichten und konfigurieren 3

Ähnliche Java Themen


Oben