Wie öffne ich eine lokale text-Datei und zeigt den Inhalt in meinem browser?

Ich habe die Absicht, einen link in meine Webseite, öffnen Sie eine lokale text-Datei und seinen Inhalt anzuzeigen. Dies ist, was ich bisher versucht habe:

<a href='#' onclick='readTextFile("file:///F:/folder1/abc.txt")' title='Summary'><h3>Summary</h3></a>

function readTextFile(file)
{
    var rawFile = new XMLHttpRequest();
    rawFile.open("GET", file, false);
    rawFile.onreadystatechange = function ()
    {
        if(rawFile.readyState === 4)
        {
            if(rawFile.status === 200 || rawFile.status == 0)
            {
                var allText = rawFile.responseText;
                alert(allText);
            }
        }
    }
    rawFile.send(null);
}

Dies ist der Fehler, bin ich immer:

XMLHttpRequest-Objekt kann nicht geladen werden file:///F:/folder1/abc.txt. Cross-origin
Anfragen sind nur für die unterstützten Protokoll-Schemata: http, Daten -, Chrom -,
chrome-Erweiterung https -, chrome-Erweiterung-Ressource.

Meine Webseite läuft lokal auf einem lokalen server.

Ist es sogar möglich, zum öffnen und Lesen von lokalen Dateien?Scheint wie etwas, das sollten die Browser wohl nicht erlauben.

  • oooh, Nein … nur wieder Lesen die Frage … Sie kann das nicht tun, oh Gott bitte lass es nie machbar sein in jedem browser!
  • In den meisten Browsern ist dies nur möglich, für Ressourcen in den Ordner wo die Seite lebt, oder in einem untergeordneten Ordner.
  • er will öffnen file:/// aus http:// !!
  • ah, in der Tat. Nein, das ist überhaupt nicht möglich.
  • Sie keinen Zugriff auf Systemdateien-check hier
  • Das gleiche gilt auch, wenn ich Zugriff auf ein html-Dokument statt einem text-Dokument?
  • yep @karansabhani

InformationsquelleAutor karansabhani | 2017-03-07



4 Replies
  1. 2

    Für HTML5-kompatible Webseiten, die Sie verwenden können, die neue APIs zur Verfügung, mit HTML5.

    HTML5 FileReader – Schnittstelle kann verwendet werden, um asynchron eine Datei Lesen, die durch bekannte JavaScript-event-handling. Es bietet die folgenden Funktionen:

    • readAsText
    • readAsBinaryString
    • readAsDataURL
    • readAsArrayBuffer

    Folgen Sie bitte diesem treehouse blog (enthält demo auch) und auch diese für Ihre Referenz.

  2. 1

    neue Antwort:

    Es ist immer noch möglich.

    1. Chrome verwenden
    2. Installieren tampermonkey-Erweiterung
    3. Aktivieren Sie das Kontrollkästchen, um es auf lokale Dateien zugreifen können.
    4. Fügen Sie ein script ein, wie unten:

    //==UserScript==
    //@name         read localfile
    //@namespace    http://tampermonkey.net/
    //@version      0.1
    //@description  read localfile
    //@author       blackmiaool
    //@match        http://stackoverflow.com/*
    //@match        https://stackoverflow.com/*
    //@grant        GM_getResourceText
    //@resource     b file://C:\Users\blackmiaool\the-path-of-the-file
    //==/UserScript==
    
    (function() {
        'use strict';
        var a=GM_getResourceText("b");
        console.log("The file's content is ",a);
    })();

    Erinnern korrigieren Sie den Pfad der Datei, und testen Sie es auf dieser Seite.

    alte Antwort:

    Sicher, es ist möglich. Wenn Ihr index.html die Datei findet „/some-path/index.html“ nur setzen Sie Ihre abc.txt bei „/some-path/abc.txt“. Und ändern Sie die „file:///F:/folder1/abc.txt“ um „./abc.txt“.

    • sehen, wo er sagt Webseite läuft lokal auf einem local server
    • Ich denke, dass die lokalen server bedeutet, dass der server läuft auf dem eigenen pc.
    • Ich denke, dass lokale server lokale server
    • Sorry, hätte das klarer, vom lokalen server meine ich einen lokal gehosteten server als localhost. In diesem Fall ist es in Ordnung, wenn die Ressource, die ich versuche, Zugriff auf den server
    • Ich habe aktualisiert die Antwort.
    • Wie etwa mehrere Dateien mit dynamischen Pfaden?!
    • Ich weiß nicht, wie das zu erreichen ist es mit dem reinen browser. Versuchen schreiben Sie Ihre eigenen nodejs-server zu erreichen.

  3. 0

    Einfach „NEIN, Sie können nicht Lesen, alle Dateien vom server bereitgestellt, die lokal auf Ihrem Rechner.“ Um alle Ressourcen zugreifen, muss man die Ressource auf Ihrem Server. Wo die aktuelle Seite wird serviert.

  4. 0

    Die Datei benötigen, um in Ihre web-Anwendung zu verlinken. Ermöglicht javascript-Zugriff auf Ihre Maschine außerhalb der Anwendung ist ein Sicherheitsrisiko und ist nicht erlaubt.
    Eine back-end-Prozess die Datei Lesen können, dann geben Ihnen die Ergebnisse, aber Sie können nicht Lesen, direkt von javascript aus auf eine Datei auf Ihrem Rechner

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.