Bilder werden nicht angezeigt

Status
Nicht offen für weitere Antworten.
D

dips

Gast
Halllo liebe Foris,

die Situation:
der User kann über ein Formular ein Bild hochladen. Dieses wird im Dateisystem des Servers gespeichert. Danach kann sich der User das hochgeladene Bild ansehen.

eigentlich klappt auch alles wenn man den Server und den Client auf dem gleichen Rechner laufen hat, aber sobald ich es von einem anderen Rechner aus versuche, werden die bilder nicht mehr angezeigt. alles andere klappt: hochladen, speichern im html steht sogar der richtige pfad zum bild drin...ich verstehs nicht

hat da vielleicht jemand ne idee?

schöne grüße
dips
 
G

Guest

Gast
Hallo

also in meiner jsp, die die Bilder anzeigen soll steht:

Code:
<c:if test="${newQuestion.questionTyp eq 'PICTURE'}">
${newQuestion.imageName}

[img]${imgaeDirectory}/Question/${newQuestion.id}/${newQuestion.imageName}[/img]
</c:if>

gespeichert werden die bilder so:

Code:
public void saveImage(WithImage entity, MyImage image) {
		File file = new File(MyPropertyReader
				.getProperty("questionmanagement.question.iconlocation")
				+ "/" +entity.getClass().getSimpleName()+"/"+ entity.getId());
		file.mkdirs();
		try {
			ImageIO.write(image.getImage(), "jpg", new File(file
					.getAbsolutePath()
					+ "/" + entity.getImageName()));
		} catch (IOException e) {
			System.out.println("fehler im bild speichern");
			e.printStackTrace();

		}
	}

und die Property questionmanagement.question.iconlocation ist ein Pfad :
Code:
D:/testapplicaton/data/images

irgentwie können die bilder nicht übers netzwerk angezeigt werden, glaub ich...
die frage ist: wie mach ich das dann?
 

ms

Top Contributor
Ich meinte den img-Tag im Html-Output. Auf welche URL zeigt das src-Attribut?
Und wo liegt das Bild tatsächlich?

ms
 
D

dips

Gast
achso :) also im html output steht:

maus.jpg


und das bild is aufm dem server in folgendem Ordner: D:\testapplicaton\data\images\Question\2\maus.jpg

stimmt genau überein, und wenn ich server und client vom gleichen rechner aus ausführe gehts ja auch

ich glaube fast, dass des ganz einfach ist und ich raffs einfach nur nich :)

danke für die hilfe im voraus
 

ms

Top Contributor
D:\ ... geht immer auf den lokalen Rechner.

Wie ich sehe verwendest du JSTL.
Schau dir mal den c:url -Tag an.

ms
 
D

dips

Gast
mhh... ich versteh nicht ganz wie c:url mir da weiterhelfen soll...ich hab gefunden das der tag zum rewrite von URLs benutzt werden kann, aber wie komm ich denn damit an das bild auf dem server??

kapier ich nich *sorry* kannst du mir das erklären?
schöne grüße :)
dips
 
D

dips

Gast
also ich hab mich mal weiterbelesen :) mit <c:url> kann man schon auf bilder verweisen, aber so wie ich das verstanden habe, komm ich damit nich aus dem servlet kontext raus

es können also meiner meinung nach damit nur quellen angegeben werden, die sich im servlet context befinden, also beim deployen schon im webapplikationsverzeichnis sind!

seh ich das richtig?

wenn ja dann denke ich mir weiterhin, dass die bilder, die ich hochlade nicht im servlet kontext sind, weil ich die ja irgentwo im verzeichnisbaum des servers ablege und in die .war datei kann ich sie ja schlecht reintun...

wenn meine Überlegungen totaler Schwachsinn sein sollten *hehe* war n versuch :D und vielleicht kannst du mich ja berichtigen

die frage ist nun trotzdem noch: wie komm ich an die hochgeladenen bilder ran oder ist es überhaupt möglich sie darzustellen?? hab noch von einer möglichkeit gelesen bilder als blob in die datenbank zu packen...aber ich glaub irgentwie nicht das des so sinnvoll wäre

schöne grüße
dips
 
G

Guest

Gast
Wenn der Browser in einer HTML-Seite folgendes findet

Code:
[img]D:/testapplicaton/data/images/Question/2/maus.jpg[/img]

versucht er das Bild von der _lokalen_ D-Platte des Client zu laden und nicht von der D-Platte des Servers. An die kann er auch garnicht herankommen.

Wenn das Bild außerhalb des Context liegt muß du es z.B. über ein Servlet innerhalb deines contexts senden, also von der Platte laden und auf den ServletOutputStream senden.
 
M

maki

Gast
Brauchst so etwas wie ein "stream servlet" wenn Dateien an den Client (Browser) gesendet werden sollen die nicht im Context liegen.
 

ms

Top Contributor
Wenn du einen Apache vor dem ServletContainer/ApplicationServer geschalten hast kannst du den das erledigen lassen.

c:url erzeugt dir eine Url.

ms
 
D

dips

Gast
soo... ich habs hinbekommen !!!

vielen dank an euch, mit den richtigen stichpunkten findet man sogar die lösung im internet. das problem ist, man weiß meistens gar nich wonach man suchen soll *g*

also meine lösung:

ein servlet mapped an /application/get_image:

Code:
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		super.doGet(req, resp);
		String id;
		String typ;
		String imagename;
		try {
			id = getParameter("id");
			typ = getParameter("typ");
			imagename = getParameter("imagename");
			File file = new File(IMAGE_LOCATION+"/"+typ+"/"+id+"/"+imagename);
			resp.setContentType("image/jpeg");
			BufferedImage image = ImageIO.read(file);
			ImageIO.write(image, "jpg", resp.getOutputStream());
		} catch (ParamterIsNullException e) {
			addErrorMessage("Das Bild konnte nicht geladen werden");
		}
    }

der jsp aufruf:

Code:
[img]\application/get_image?id=${newQuestion.id}&typ=Question&imagename=${newQuestion.imageName}[/img]

schöne grüße :)
dips
 
G

Guest

Gast
hallo leute,
ich hab noch ein Problem mit meinem GetImage Servlet.
Kann es sein, dass ein Servlet zwei Sachen gleichzeitg macht?

in meiner jsp ruf ich das servlet so auf:

Code:
<c:forEach var="ans" items="${newQuestionAnswersTemporal}">
    [img]\application/get_image?tempAnswer=${ans.temporalId}[/img]
</c:forEach>

Die Bilder liegen mit den verschiedenen ids als key im session scope. Irgentwie kommt mein servlet da durcheinander und zeigt das falsche Bild an. Hier ist noch mal der servlet code, hab da noch ma n bissel was angepasst:

Code:
	private void showTemporalAnswerImage(HttpServletResponse resp)
			throws IOException {
		try {
			int tempId = Integer
					.parseInt(getParameter(SHOW_TEMPORAL_ANSWER_IMAGE));
			List<Answer> temporalAnswers = (List<Answer>) getSessionAttribut(NEW_QUESTION_TEMPORAL_ANSWER);
			MyImage candiImage = null;
			for (Answer answer : temporalAnswers) {
				if (answer.getTemporalId() == tempId) {
										candiImage = (CandiImage) getSessionAttribut(TEMPORAL_ANSWER_IMAGE
							+ answer.getTemporalId());
					break;
				}
			}
			if (candiImage == null) {
				//image nicht gefunden			
} else {
				BufferedImage image = candiImage.getImage();
				resp.setContentType("image/jpeg");
				ImageIO.write(image, "jpg", resp.getOutputStream());
					}

		} catch (ParamterIsNullException e) {
			//es soll kein bild für eine temporäre antwort gesucht werden
		}
	}

Die keys stimmen alle, das hab ich schon tausendmal überprüft, ich kann mir nur vorstellen, dass es daran liegt, dass er mit
Code:
ImageIO.write(image, "jpg", resp.getOutputStream());
noch nicht fertig ist, wenn er schon das nächste Bild laden möchte.
Kann das sein?
Oder hat jemand eine andere Idee, warum das nicht so richtig funktioniert? Vor allem das Ding ist ja, manchmal zeigt er das richtige Bild beim nächsten request schon wieder nicht...
Schöne Grüße und Dank im Voraus :)
Dips
 
D

dips

Gast
hallo liebe fories, ich hab weiter geforscht und gelesen, dass servlets nicht threadsicher sind. ist das vielleicht das problem? und wenn ja wie kann ich es lösen?

schöne grüße dips
 
M

maki

Gast
Zeig doch mal deine doPost Methode.

Und ja, Servlets sind nicht threadsicher, ist aber eine absolute Grundlage der Servlet Programmierung...
 
D

dips

Gast
Hallo maki :)
hach...ist mein erstes webprojekt und lieber check ich das mit den threads später als nie *g*

Code:
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		super.doGet(req, resp);
		showQuestionImage(resp);
		showTemporalAnswerImage(resp);
		showExistingAnswerImage(resp);
}

das ist meine doget methode,

die showTemporalAnswerImage(resp); hab ich ja schon eins vorher geposted. Die showQuestionImage(resp); klappt eigentlich immer soweit ich das probiert habe, liegt dann wohl daran, dass sie nur einmal aufgerufen wird und nicht in einer schleife, wie die anderen beiden methoden...

haste ne idee?
schöne grüße
dips
 
M

maki

Gast
Weg damit, haben nix in einem Servlet zu suchen -> nicht Threadsicher
 
D

dips

Gast
*hehe* das wird ein spaß! ich kenn mich nich so aus mit threadsicher, erben dürfen servlets doch von einander oder?
nagut ich bau erstmal die ganzen instanzvariebalen weg :(
danke für deine hilfe :) :)
 
M

maki

Gast
Klassenvariablen sind auch nciht erwünscht...

Man kann beide haben, sowohl Instanz- als auch Klassenvariablen, allerdings dürfen diese dann nach der Initialisierung nicht mehr verändert werden.

Am besten ohne...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R JSF Bilder aus CSS Datei werden nicht angezeigt. Web Tier 2
H JSF jsf/sessionScoped Bean - Bilder (jpg) werden nicht richtig dargestellt Web Tier 1
D Bilder werden nicht angezeigt Web Tier 2
H im IE werden leere Bilder mit X gekennzeichnet Web Tier 4
N Bilder aus Datenbank dynamisch in JSF streamen Web Tier 7
S JSF Primefaces Thema, Css wird geladen, nur die Bilder nicht, bzw Resource wird nicht aufgelöst Web Tier 5
K Bilder nach dem Upload nutzen Web Tier 10
K Bilder in Java-Webapplikationen Web Tier 12
M Bilder in Servlets Web Tier 8
M JSP Custom Tag für Bilder Web Tier 14
H Vorgehensweise: Bilder anzeigen/erstellen in JSP/Servlet ? Web Tier 3
N JSF: Servlet für Bilder: Verbindung zu Spring Service ? Web Tier 1
Psypsy Spring Thymeleaf Layer werden nicht angezeigt. Web Tier 0
C JSF JSF Daten aus Klasse werden nicht angezeigt Web Tier 4
X JSF - Auf was muss in Bezug auf Sicherheit geachtet werden?? Web Tier 7
L Applet kann unter WEB-INF/classes nicht gefunden werden Web Tier 10
R JSF Beans werden nicht ausgeführt Web Tier 4
H JSF Daten aus ManagedBean können vom Controller gelesen werden Web Tier 6
B JSF Servlectexception: Verwalteter Bean "..bean" kann nicht erstellt werden Web Tier 2
I JSF Daten aus Formular werden nicht übernommen Web Tier 6
I Sessions werden ungewollt automatisch erzeugt??? Web Tier 3
R Message Bundles werden nicht geladen Web Tier 2
J JSP-Seite kann nicht aufgerufen werden Web Tier 14
H JSF - Methode kann nicht aufgerufen werden Web Tier 5
O JSP: HTML tags werden vor struts tags angezeigt Web Tier 3
G elemente werden nicht dargestellt - 'webui' ist undefiniert Web Tier 5
D Codierung im Frontend funktioniert nicht richtig Web Tier 2
hjpsoft JSP <TEXTAREA>-Tag unterstützt EL-Variablen nicht Web Tier 7
krgewb Base64 funktioniert nicht, aber btoa funktioniert Web Tier 10
6 JSF Form Attribute nicht an Bean übergeben Web Tier 2
C JSP data wird nicht angezeigt Web Tier 6
M webapp controller funktioniert nicht Web Tier 3
J Https Verknüpfung funktioniert nicht Web Tier 0
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
K Vaadin Projekt Funkioniert nicht... Web Tier 1
M JSP PrimeFaces LayoutUnits <- breite lässt sich nicht erzwingen wenn 'center' Web Tier 0
R JSF selectOneListbox speichert Value nicht. Web Tier 1
W Tabelle wird nicht aktualisiert Web Tier 8
W JSF DataTable - Filter Funktion funktioniert nicht Web Tier 3
A JSF String wird nicht angezeigt Web Tier 2
S JSF CSS wird gefunden aber inhaltlich nicht angewendet Web Tier 2
FINF_AW_Alex EJB - property nicht vorhanden Web Tier 6
F JSF Bean funktioniert nicht immer.. Web Tier 3
F JSF h:selectOneMenu Wert vorbelegen klappt nicht? Web Tier 2
R JSF ManagedProperty wird nicht erstellt Web Tier 1
L error-page mit ui:composite funktioniert nicht Web Tier 0
S Primefaces commandButton in einem Dialog/Form/PanelGrid führt actionListener nicht aus Web Tier 4
A Faces Context nicht mehr erreichbar nach Servlet Aufruf Web Tier 1
D JSF DataTable konvertiert Felder nicht Web Tier 1
G JSF Radio Button ValueChangeListener Wert wird nicht übernommen Web Tier 2
L JSF Composit Component mit ajax funktioniert nicht. Web Tier 4
M fileUploadListener geht nicht wenn Element zur Laufzeit gerendert wird Web Tier 2
Phash Link geht nicht Web Tier 4
S setInterval() will nicht Web Tier 2
A Aufruf eines Servlets auf einer JSP Seite funktioniert nicht Web Tier 10
B JSP Warum nicht ThreadSafe? Web Tier 21
G GWT 404 - Servlet nicht gefunden Web Tier 6
H Servlet lässt sich nicht deployen Web Tier 7
M rendered ruft eine Methode auf, andere aber nicht Web Tier 15
M System-Event in der faces-config.xml klappt nicht Web Tier 15
J JSF BigInteger nicht null sondern 0 Web Tier 3
nrg Java-Code in Taglib wird nicht richtig ausgeführt. Web Tier 7
F JSF CSS Verschachtelung wird nicht abgebildet Web Tier 2
F.S.WhiTeY Servlet Servlet wird nicht angesprochen Web Tier 3
D JSF a4j:support wird nicht gefunden Web Tier 2
D JSF cellpadding oder cellspacing funktioniert nicht Web Tier 4
xehpuk JSF 404 statt 500 bei nicht existenter JSF-Seite Web Tier 7
W JSF Login funktioniert nicht Web Tier 12
K Neue Entitäten werde nicht angezeigt Web Tier 4
F PrimeFaces p:selectOneMenu funktioniert nicht Web Tier 12
H JSP, Eclipse, Tomcat - Java Klasse wird nicht gefunden Web Tier 8
A JSF WebappClassloader.modified() aktualisiert Klassen nicht Web Tier 2
A JSF Rücksicht auf nicht eingeschaltetes JavaScript nehmen Web Tier 2
T JSF wird nicht ausgeführt Web Tier 4
R RadioButton nicht disabled Web Tier 5
J @Named Notation funktioniert nicht Web Tier 3
aze JSF CommandButton:Action wird nicht ausgeführt Web Tier 2
P JSF Netbeans 7.1.1 unterstützt JSF nicht? Web Tier 2
T RichFaces will nicht funktionieren :( Web Tier 2
H JSF ActionListener wird ausgeführt, aber ändert den Wert nicht. Web Tier 7
D richTable sort funktioniert nicht Web Tier 2
L JSF Beispiel wird nicht ausgeführt Web Tier 2
D Fehler: Cookies nicht gesetzt Web Tier 5
A Servlet File Upload funktioniert nur lokal auf Entwicklungsrechner, nicht in Tomcat Web Tier 5
Dit_ JSP Überprüfen ob Benutzer eingeloggt ist oder nicht | SessionSicherheit Web Tier 7
M JSF Button - Methode wird nicht aufgerufen Web Tier 4
L einfache JSF-Seite wird nicht angezeigt Web Tier 8
B JSF HtmlCommandButton --- Action wird nicht aufgerufen Web Tier 2
N JSF [Maven] Seam 2.2, Richfaces 3.3 - a4j wird nicht umgewandelt Web Tier 6
NoXiD JSF h:selectOneMenu - änderungen nicht übernommen Web Tier 14
C JSON-Antwort an Javascript geht nicht Web Tier 7
H Servlet Apache Geronimo: Servlet nicht erreichbar Web Tier 2
P JSF AJAX render wird nicht ausgeführt Web Tier 4
P SelectOneMenu liest Daten nicht ein Web Tier 7
E JSF JSF findet Property im ManagedBean nicht Web Tier 5
J JSF Richfaces Tabs, dynamisches include funktioniert nicht Web Tier 4
P Servlet wird nicht gefunden - HTTP Error 503 Web Tier 7
D Fileupload in GWT funktioniert nicht Web Tier 10
B JSF Login authentication schaffe ich nicht Web Tier 2
P Eclipse zeigt Errors an, die auf Tomcat nicht auftreten Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben