it-swarm.com.de

Msgstr "Lokale Ressource kann nicht geladen werden: file: /// C: .... jpg" Java EE Tomcat

Ich versuche nach einem guten Speicher ein Bild aus meinem Dateisystem abzurufen. 

  1. Ich hatte das Bild im Ordner c:\images\gespeichert und angenommen, dass der vollständige Pfad c:\images\mypic.jpg lautet 
  2. wenn ich versuche, es abzurufen, setzen Sie das img src-Attribut auf <img src="c:\images\mypic.jps">, indem Sie Java-Code verwenden 
  3. in der Browser-Konsole habe ich diesen Fehler gefunden Not allowed to load local resource: file:///C://images//mypic.jpg 

Frage: Wie behebt man diese Pfadprobleme? wo soll ich die bilder aufbewahren? und woher soll ich sie holen?

39
K.Ariche

durch das Senden des Tags <img src="c:\images\mypic.jpg"> würde der Browser des Benutzers auf das Bild seines Dateisystems zugreifen. Wenn Sie Bilder in einem Ordner speichern müssen, der sich in c:\images befindet, würde ich vorschlagen, ein Servlet wie images.jsp zu erstellen, das als Parameter den Namen einer Datei annimmt, den Servlet-Antwortinhalt auf image/jpg setzt und dann Byte lädt von Bild vom Serverstandort und setzen Sie es auf eine Antwort.

Aber was verwenden Sie zum Erstellen Ihrer Anwendung? Ist es ein reines Servlet? Frühling? JSF?

Hier finden Sie einige Informationen darüber, wie es geht.

20
T.G

In Chrome sollten Sie diese Funktion mit einem Laufzeitflag zulassen können - "allow-file-access-from-files "

Es scheint jedoch, dass ein Problem mit aktuellen Versionen von Chrome (37, 38) besteht, bei dem dies nicht funktioniert, es sei denn, Sie übergeben auch das Laufzeitflag --disable-web-security

Dies ist eine inakzeptable Lösung, außer vielleicht als kurzfristige Problemumgehung, die jedoch als Problem erkannt wurde: https://code.google.com/p/chromium/issues/detail?id=379206

11
Roger

Viele Browser haben ihre Sicherheitsrichtlinien so geändert, dass sie das direkte Lesen von Daten aus Dateifreigaben oder lokalen Ressourcen nicht mehr zulassen. Sie müssen die Dateien entweder an einem Ort ablegen, den Ihre Tomcat-Instanz bereitstellen kann, und einen "regulären" http-URL in die von Ihnen generierte HTML-Datei einfügen. Dies kann erreicht werden, indem entweder ein Servlet bereitgestellt wird, das die Datei liest und bereitstellt, wobei die Datei in ein Verzeichnis gestellt wird, in dem Tomcat sie als "statischen" Inhalt bereitstellt.

3
Brett Okken

Sie haben zwei Alternativen:

Zuerst müssen Sie einen ServletImageLoader erstellen, der einen Bezeichner Ihres Images (den Pfad des Images oder einen Hashwert), den Sie im Servlet verwenden, als Parameter verwendet, um Ihr Image zu verarbeiten, und es wird den geladenen Antwortstrom in den Antwortstream drucken Bild vom Server. 

Zweitens müssen Sie einen Ordner im ROOT-Ordner Ihrer Anwendung erstellen und einfach den relativen Pfad zu Ihren Bildern speichern. 

3
Mifmif

Hier ist eine einfache expressjs-Lösung, wenn Sie diese App nur lokal ausführen möchten und die Sicherheit keine Rolle spielt:

Fügen Sie in Ihrer server.js- oder app.js-Datei Folgendes hinzu:

app.use('/local-files', express.static('/'));

Das wird Ihr ENTIRE-Stammverzeichnis unter /local-files bereitstellen. Es ist unnötig zu sagen, dass dies eine wirklich schlechte Idee ist, wenn Sie planen, diese App an einem anderen Ort als auf Ihrem lokalen Computer bereitzustellen.

Jetzt können Sie einfach Folgendes tun:

<img src="/local-files/images/mypic.jps"/> 

Hinweis: Ich arbeite mit macOS. Wenn Sie Windows verwenden, müssen Sie möglicherweise 'C: \' in der Pfadzeichenfolge suchen und entfernen.

Dieser Fehler bedeutet, dass Sie Daten nicht direkt aus dem Dateisystem laden können, da dahinter Sicherheitsprobleme liegen. Die einzige Lösung, die ich kenne, ist das Erstellen eines Web-Service zum Bereitstellen von Ladedateien. 

1
Harun ERGUL

Das Konzept von http-Speicherort und Festplattenspeicherort unterscheidet sich. Was Sie tun müssen, ist:

  1. für hochgeladene Datei summer.jpg
  2. verschieben Sie diese unter einem bekannten Ort (zur Anwendung) auf die Festplatte, z. B. c:\images\summer.jpg.
  3. einfügen in das Datenbankbild, das das Bild mit dem Text summer.jpg darstellt.
  4. um es anzuzeigen, verwenden Sie einfach <img src="images/summer.jpg" />
  5. sie benötigen etwas (z. B. Apache), das c:\images\ unter dem /images Ihrer Anwendung dient. Wenn Sie dies nicht tun können, müssen Sie in Schritt 2 irgendwo unter Ihrem Webstammverzeichnis speichern, z. B. c:\my-applications\demo-app\build\images.
1
cherouvim

Verwenden Sie ABSOLUTE PATH nicht, um beispielsweise auf den Namen des Bildes zu verweisen: C:/xamp/www/Archivos/images/templatemo_image_02_opt_20160401-1244.jpg. Sie müssen den Verweis auf seine Position im Webserver verwenden. Verwenden Sie beispielsweise ../../Archivos/images/templatemo_image_02_opt_20160401-1244.jpg, je nachdem, wo Ihr Prozess ausgeführt wird. 

0
user6147214