javascript - installieren - safari not allowed to load local resource




Lokale Datei kann nicht geöffnet werden-Chrome: Lokale Ressource darf nicht geladen werden (7)

1) Öffnen Sie Ihr Terminal und geben Sie ein

npm install -g http-server

2) Gehen Sie zu dem Stammordner, den Sie für Ihre Dateien verwenden möchten, und geben Sie Folgendes ein:

http-server ./

3) Lesen Sie die Ausgabe des Terminals, es erscheint etwas http://localhost:8080 .

Alles, was dort drauf ist, darf mitgenommen werden. Beispiel:

background: url('http://localhost:8080/waw.png') ;

Testbrowser: Version von Chrome: 52.0.2743.116

Es ist ein einfaches Javascript, mit dem eine Bilddatei aus einer lokalen Datei wie 'C: \ 002.jpg' geöffnet werden kann.

function run(){

   var URL = "file:///C:\002.jpg";

   window.open(URL, null);

}
run();

Hier ist mein Beispielcode. https://fiddle.jshell.net/q326vLya/3/

Bitte geben Sie mir geeignete Vorschläge.



Es gibt eine Problemumgehung für die Verwendung von Web Server für Chrome .
Hier sind die Schritte:

  1. Fügen Sie die Erweiterung zu Chrome hinzu.
  2. Wählen Sie den Ordner (C: \ images) und starten Sie den Server an Ihrem gewünschten Port.

Greifen Sie jetzt einfach auf Ihre lokale Datei zu:

function run(){
   // 8887 is the port number you have launched your serve
   var URL = "http://127.0.0.1:8887/002.jpg";

   window.open(URL, null);

}
run();

PS: Möglicherweise müssen Sie die CORS-Header-Option in den erweiterten Einstellungen auswählen, falls Sie auf einen Fehler oder einen Fehler beim Zugriff über die Herkunft hinweg stoßen.


In Google Chrome können aus Sicherheitsgründen keine lokalen Ressourcen geladen werden. Chrome braucht http url. Mit Internet Explorer und Edge können lokale Ressourcen geladen werden, mit Safari, Chrome und Firefox können jedoch keine lokalen Ressourcen geladen werden.

Gehen Sie zum Dateispeicherort und starten Sie den Python-Server von dort aus.

python -m SimpleHttpServer

Dann setzen Sie diese URL in Funktion:

function run(){
var URL = "http://172.271.1.20:8000/" /* http://0.0.0.0:8000/ or http://127.0.0.1:8000/; */
window.open(URL, null);
}

Sie können kein Image außerhalb des Projektverzeichnisses oder aus einem Verzeichnis auf Benutzerebene laden, daher kann die Warnung "Kein Zugriff auf lokale Ressourcen" angezeigt werden.

Wenn Sie die Datei jedoch in einem Stammordner Ihres Projekts wie in {rootFolder}\Content\my-image.jpg und darauf wie {rootFolder}\Content\my-image.jpg verweisen würden:

<img src="/Content/my-image.jpg" />

Sie müssen nur alle Bildnetzwerkpfade zu Byte-Zeichenfolgen in der gespeicherten codierten HTML-Zeichenfolge ersetzen. Dazu benötigte man HtmlAgilityPack, um einen HTML-String in ein HTML-Dokument zu konvertieren. https://www.nuget.org/packages/HtmlAgilityPack

Suchen Sie nach dem folgenden Code, um jeden Bild-Quellnetzwerkpfad (oder lokalen Pfad) in Byte-Stich zu konvertieren. Es werden definitiv alle Bilder mit Netzwerkpfad (oder lokalem Pfad) in IE, Chrome und Firefox angezeigt.

string encodedHtmlString = Emailmodel.DtEmailFields.Rows[0]["Body"].ToString();

// Decode the encoded string.
StringWriter myWriter = new StringWriter();
HttpUtility.HtmlDecode(encodedHtmlString, myWriter);
string DecodedHtmlString = myWriter.ToString();

//find and replace each img src with byte string
HtmlDocument document = new HtmlDocument();
document.LoadHtml(DecodedHtmlString);
document.DocumentNode.Descendants("img")
    .Where(e =>
    {
        string src = e.GetAttributeValue("src", null) ?? "";
        return !string.IsNullOrEmpty(src);//&& src.StartsWith("data:image");
    })
    .ToList()
    .ForEach(x =>
        {
        string currentSrcValue = x.GetAttributeValue("src", null);                                
        string filePath = Path.GetDirectoryName(currentSrcValue) + "\\";
        string filename = Path.GetFileName(currentSrcValue);
        string contenttype = "image/" + Path.GetExtension(filename).Replace(".", "");
        FileStream fs = new FileStream(filePath + filename, FileMode.Open, FileAccess.Read);
        BinaryReader br = new BinaryReader(fs);
        Byte[] bytes = br.ReadBytes((Int32)fs.Length);
        br.Close();
        fs.Close();
        x.SetAttributeValue("src", "data:" + contenttype + ";base64," + Convert.ToBase64String(bytes));                                
    });

string result = document.DocumentNode.OuterHtml;
//Encode HTML string
string myEncodedString = HttpUtility.HtmlEncode(result);

Emailmodel.DtEmailFields.Rows[0]["Body"] = myEncodedString;

Wisse, dass dies etwas alt ist, aber sieh dir viele Fragen wie diese an ...

Wir verwenden Chrome häufig im Klassenzimmer und es ist ein Muss, mit lokalen Dateien zu arbeiten.

Was wir verwendet haben, ist "Web Server for Chrome". Sie starten es, wählen den Ordner, mit dem Sie arbeiten möchten, und gehen zur URL (wie 127.0.0.1:port, den Sie gewählt haben)

Es ist ein einfacher Server und kann kein PHP verwenden, aber für einfache Arbeiten könnte dies Ihre Lösung sein:

https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb





window.open