Es funktioniert, wenn die HTML-Datei lokal ist (auf meinem C-Laufwerk), aber nicht, wenn sich die HTML-Datei auf einem Server befindet und die Image-Datei lokal ist. Warum ist das so?
Mögliche Problemumgehungen?
javascript
html
filesystems
src
PeterV
quelle
quelle
src=""
Antworten:
Es wäre eine Sicherheitslücke, wenn der Client lokale Dateisystemdateien anfordern und dann mithilfe von JavaScript herausfinden könnte, was darin enthalten ist.
Die einzige Möglichkeit, dies zu umgehen, besteht darin, eine Erweiterung in einem Browser zu erstellen. Firefox-Erweiterungen und IE-Erweiterungen können auf lokale Ressourcen zugreifen. Chrome ist viel restriktiver.
quelle
sollten Sie nicht "file: // C: /localfile.jpg" anstelle von "C: /localfile.jpg" verwenden?
quelle
Browser dürfen nur dann auf das lokale Dateisystem zugreifen, wenn Sie auf eine lokale HTML-Seite zugreifen. Sie müssen das Bild irgendwo hochladen. Wenn es sich im selben Verzeichnis wie die HTML-Datei befindet, können Sie es verwenden
<img src="localfile.jpg"/>
quelle
C:
ist kein anerkanntes URI-Schema. Versuchen Sie esfile://c|/...
stattdessen.quelle
Ehrlich gesagt war der einfachste Weg, dem Server ein Datei-Hosting hinzuzufügen.
Öffnen Sie IIS
Fügen Sie unter Standardwebsite ein virtuelles Verzeichnis hinzu
Fügen Sie dem Ordner auf dem Laufwerk C: die entsprechenden Berechtigungen für "NETWORK SERVICE" und "IIS AppPool \ DefaultAppPool" hinzu.
Standardwebsite aktualisieren
Und du bist fertig. Sie können jetzt zu jedem Bild in diesem Ordner navigieren, indem Sie zu http: //yourServerName/whateverYourFolderNameIs/yourImage.jpg navigieren und diese URL in Ihrem img src verwenden
Hoffe das hilft jemandem
quelle
IE 9: Wenn Sie möchten, dass der Benutzer ein Bild betrachtet, bevor er es auf dem Server veröffentlicht: Der Benutzer sollte die Website zur "Liste vertrauenswürdiger Websites" hinzufügen.
quelle
Wir können FileReader () von javascript und die Funktion readAsDataURL (fileContent) verwenden, um die lokale Laufwerks- / Ordnerdatei anzuzeigen . Binden Sie das Änderungsereignis an das Bild und rufen Sie dann die showpreview-Funktion von Javascript auf. Versuche dies -
quelle
Abgesehen von Newtangs Beobachtung der Sicherheitsregeln, woher wissen Sie, dass jeder, der Ihre Seite anzeigt, die richtigen Bilder hat
c:\localfile.jpg
? Das kannst du nicht. Selbst wenn du denkst, dass du es kannst, kannst du es nicht. Zum einen setzt es eine Windows-Umgebung voraus.quelle
Ich sehe zwei Möglichkeiten für das, was Sie versuchen zu tun:
Sie möchten, dass Ihre Webseite, die auf einem Server ausgeführt wird, die Datei auf dem Computer findet, auf dem Sie sie ursprünglich entworfen haben?
Sie möchten, dass es von dem PC abgerufen wird, der auf der Seite angezeigt wird?
Option 1 macht einfach keinen Sinn :)
Option 2 wäre eine Sicherheitslücke. Der Browser verhindert, dass eine Webseite (die aus dem Internet bereitgestellt wird) Inhalte auf den Computer des Betrachters lädt.
Kyle Hudson hat dir gesagt, was du tun musst, aber das ist so grundlegend, dass ich es schwer finde zu glauben, dass dies alles ist, was du tun willst.
quelle
Wenn Sie den Google Chrome-Browser verwenden, können Sie diesen verwenden
Wenn Sie jedoch Mozila Firefox verwenden, müssen Sie "Datei" hinzufügen, z.
quelle
Sie müssen das Bild ebenfalls hochladen und dann mit dem Bild auf dem Server verknüpfen.
quelle
Was ist, wenn das Bild vom Benutzer ausgewählt wird? Verwenden Sie ein input: file-Tag und zeigen Sie es nach Auswahl des Bildes auf der clientseitigen Webseite an. Das ist für die meisten Dinge machbar. Im Moment versuche ich, es für IE zum Laufen zu bringen, aber wie bei allen Microsoft-Produkten ist es ein Cluster Fork ().
quelle
Wenn Sie eine lokale Website nur für sich selbst oder bestimmte Clients bereitstellen, können Sie dies
mklink /D MyImages "C:/MyImages"
umgehen, indem Sie im Stammverzeichnis der Website als Administrator in cmd ausgeführt werden. Dann verbindet do im HTML-<img src="MyImages/whatever.jpg">
Code und die von mklink hergestellte symbolische Verknüpfung die relative src-Verknüpfung mit der Verknüpfung auf Ihrem C-Laufwerk. Es hat dieses Problem für mich gelöst und kann anderen helfen, die zu dieser Frage kommen.(Offensichtlich funktioniert dies nicht für öffentliche Websites, da Sie cmd-Befehle nicht einfach auf den Computern von Personen ausführen können.)
quelle
Ich habe viele Techniken ausprobiert und schließlich eine in C # -Seite und JS-Seite gefunden. Sie können dem src-Attribut keinen physischen Pfad zuweisen, aber Sie können die base64-Zeichenfolge als src für das Img-Tag angeben. Schauen wir uns das folgende C # -Codebeispiel an.
C # -Code
Hoffe das wird helfen
quelle
beginnt mit
file:///
und endet mitfilename
sollte funktionieren:quelle