it-swarm.com.de

Warum kann ich <img src = "C: /localfile.jpg"> nicht ausführen?

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 das?

Gibt es mögliche Problemumgehungen?

83
PeterV

Es wäre eine Sicherheitslücke, wenn der Client lokale Dateisystemdateien anfordern und dann mithilfe von JavaScript herausfinden könnte, was in ihnen enthalten ist.

Der einzige Weg, 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.

54
Bjorn Tipling

sollten Sie nicht "file: // C: /localfile.jpg" anstelle von "C: /localfile.jpg" verwenden?

28
AndreDurao

Browser dürfen nur 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 <img src="localfile.jpg"/>

25
Newtang

C: ist kein anerkanntes URI-Schema. Versuchen file://c|/... stattdessen.

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

    • der virtuelle Pfad ist der Pfad, zu dem Sie im Browser navigieren möchten. Wenn Sie also " serverName/images " auswählen, können Sie zu dieser Datei navigieren, indem Sie zu http: // serverName/images wechseln =
    • Fügen Sie dann den physischen Pfad auf dem Laufwerk C: 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 nun zu jedem Bild in diesem Ordner navigieren, indem Sie zu http: //IhrServername/whateverYourFolderNameIs/IhrImage.jpg navigieren und diese URL in Ihrem img src verwenden

Hoffe das hilft jemandem

4
foremaro

IE 9: Wenn Sie möchten, dass der Benutzer sich das Bild ansieht, bevor es auf dem Server veröffentlicht wird: Der Benutzer sollte die Website zur "Liste der vertrauenswürdigen Websites" HINZUFÜGEN.

3
United4Peace

Abgesehen von Newtangs Bemerkung zu den Sicherheitsregeln, woher wissen Sie, dass jeder, der Ihre Seite ansieht, die richtigen Bilder unter c:\localfile.jpg? Das kannst du nicht. Auch wenn Sie glauben, dass Sie es können, können Sie es nicht. Zum einen setzt es eine Windows-Umgebung voraus.

2
Jack Kelly

Ich sehe zwei Möglichkeiten für das, was Sie versuchen, zu tun:

  1. Sie möchten, dass Ihre Webseite auf einem Server die Datei auf dem Computer findet, den Sie ursprünglich entworfen haben?

  2. 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 (aus dem Internet bereitgestellte) Webseite 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 das alles ist, was du tun willst.

1
Juan Mendes

wenn Sie den Google chrome browser benutzen, können Sie das so benutzen

<img src="E://bulbpro/pic_bulboff.gif"   width="150px" height="200px">

Wenn Sie jedoch Mozila Firefox verwenden, müssen Sie ex "file" hinzufügen.

<img src="file:E://bulbpro/pic_bulboff.gif"   width="150px" height="200px">
1

wie wäre es, wenn das Bild vom Benutzer ausgewählt würde? Verwenden Sie ein input: file-Tag und zeigen Sie es auf der clientseitigen Webseite an, nachdem Sie das Bild ausgewählt haben. 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 handelt es sich um einen Cluster-Fork ().

0
Fallenreaper

Wenn Sie eine lokale Website nur für sich selbst oder für bestimmte Kunden bereitstellen, können Sie dies umgehen, indem Sie mklink /D MyImages "C:/MyImages" im Stammverzeichnis der Website als Administrator in cmd. Dann in der HTML, tun <img src="MyImages/whatever.jpg"> und die von mklink hergestellte symbolische Verbindung verbinden die relative src-Verbindung mit der Verbindung auf Ihrem C-Laufwerk. Es hat dieses Problem für mich gelöst, sodass es anderen helfen kann, die auf diese 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.)

0
takanuva15

wir können Javascript verwenden FileReader () und es ist readAsDataURL (fileContent) = Funktion zum Anzeigen der lokalen Laufwerks-/Ordnerdatei. Bindet das Änderungsereignis an das Bild und ruft dann die Show-Vorschau-Funktion von Javascript auf. Versuche dies -

<!doctype html>
<html>

<head>
    <meta charset='utf-8'>
    <meta name='viewport' content='width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;'>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
    <title></title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    <script type="text/javascript">
    function showpreview(e) {
        var reader = new FileReader();
        reader.onload = function (e) {
            $("#previewImage").attr("src", e.target.result);
        }
        //Imagepath.files[0] is blob type
        reader.readAsDataURL(e.files[0]);
    }
    </script>
</head>
<body >
    <div>
    <input type="file" name="fileupload" value="fileupload" id="fileupload" onchange='showpreview(this)'>
    </div>
    <div>
        &nbsp;
    </div>
    <div>
    <img width="50%" id="previewImage">
    </div>
</body>
</html>
0

Sie müssen das Bild ebenfalls hochladen und dann auf das Bild auf dem Server verlinken.

0
Kyle Hudson