Próbuję napisać prosty czytnik plików tekstowych, tworząc funkcję, która pobiera ścieżkę pliku i konwertuje każdy wiersz tekstu na tablicę znaków, ale to nie działa.
function readTextFile() {
var rawFile = new XMLHttpRequest();
rawFile.open("GET", "testing.txt", true);
rawFile.onreadystatechange = function() {
if (rawFile.readyState === 4) {
var allText = rawFile.responseText;
document.getElementById("textSection").innerHTML = allText;
}
}
rawFile.send();
}
Co tu idzie nie tak?
To wciąż nie działa po zmianie kodu trochę z poprzedniej wersji, a teraz daje mi XMLHttpRequest
wyjątek 101.
Przetestowałem to na Firefoksie i działa, ale w Google Chrome to po prostu nie działa i wciąż daje mi wyjątek 101. Jak mogę to włączyć w nie tylko Firefoksie, ale także w innych przeglądarkach (zwłaszcza Chrome )?
status
z0
jak200
.Odpowiedzi:
Musisz sprawdzić status 0 (ponieważ przy ładowaniu plików lokalnie
XMLHttpRequest
nie otrzymujesz statusu zwracanego, ponieważ nie pochodzi on od aWebserver
)I podaj
file://
w nazwie pliku:źródło
file:///User/Danny/Desktop/javascriptWork/testing.txt
pasek adresu przeglądarki i sprawdź, czy możesz zobaczyć plik.true
. Jeśli było to prostelocal
wyszukiwanie, ustawienie asynchronizacji nafalse
OK jest prawidłowe, aleonreadystatechange
nie jest potrzebne, gdy jest ustawione na false. Oto dokumentacja: w3schools.com/ajax/ajax_xmlhttprequest_send.aspOdwiedź Javascripture ! Idź do sekcji readAsText i wypróbuj przykład. Będziesz mógł wiedzieć, jak działa funkcja readAsText FileReadera .
źródło
Po wprowadzeniu apletu pobierania w javascript czytanie zawartości pliku nie może być prostsze.
czytanie pliku tekstowego
czytanie pliku json
Aktualizacja 30/07/2018 (wyłączenie odpowiedzialności):
Aktualizacja 2 (zrzeczenie się odpowiedzialności):
źródło
Referer
”. Myślę, że oznacza to pożegnanie z dobrymi ol'FileReaders i HttpRequests (i nie będę ich trochę tęsknił;)Fetch API cannot load file:///C:/Users/path/to/file/file.txt. URL scheme must be "http" or "https" for CORS request.
źródło
var reader = new FileReader();
zerareader.readAsBinaryString(..)
- czyta zawartość mojego pliku tekstowego. Czysty, elegancki, działa jak urok. Najlepsza odpowiedź w tym wątku dla mnie - dzięki!Jon Perryman,
Tak, js może czytać pliki lokalne (patrz FileReader ()), ale nie automatycznie: użytkownik musi przekazać plik lub listę plików do skryptu za pomocą html
<input type=file>
.Następnie za pomocą js można przetwarzać (przykładowy widok) plik lub listę plików, niektóre ich właściwości oraz zawartość pliku lub plików.
Ze względów bezpieczeństwa js nie może uzyskać automatycznego dostępu do systemu plików swojego komputera (bez udziału użytkownika).
Aby umożliwić js automatyczny dostęp do lokalnego fs, konieczne jest utworzenie nie pliku html z js w środku, ale dokument hta.
Plik hta może zawierać w sobie js lub vbs.
Ale plik wykonywalny hta będzie działał tylko w systemach Windows.
Jest to standardowe zachowanie przeglądarki.
Google Chrome działał również w interfejsie FS, więcej informacji tutaj: http://www.html5rocks.com/en/tutorials/file/filesystem/
źródło
Prawdopodobnie już go wypróbujesz, wpisz „false” w następujący sposób:
źródło
Spróbuj utworzyć dwie funkcje:
źródło
inny przykład - mój czytnik z klasą FileReader
źródło
Korzystanie z funkcji pobierania i asynchronizacji
źródło
To może pomóc
źródło
Nowoczesne rozwiązanie:
Gdy użytkownik prześle plik tekstowy przez to wejście, zostanie on zalogowany do konsoli. Oto działające demo jsbin .
Oto bardziej szczegółowa wersja:
Obecnie (styczeń 2020) działa to tylko w Chrome i Firefox, sprawdź tutaj, jeśli czytasz to w przyszłości: https://developer.mozilla.org/en-US/docs/Web/API/Blob/text
W starszych przeglądarkach powinno to działać:
źródło
Dodając do niektórych powyższych odpowiedzi, to zmodyfikowane rozwiązanie działało dla mnie.
…
…
źródło
- czytaj tekst pliku z javascript
- tekst dziennika konsoli z pliku za pomocą javascript
- Google Chrome i Mozilla Firefox
w moim przypadku mam taką strukturę plików:
wynik w pliku console.log:
źródło
źródło
Pobierz lokalne dane pliku w pliku js (data.js):
plik data.js jak:
Dynamic UnixTime queryString zapobiega buforowaniu.
AJ działa w sieci http: //.
źródło
Lokalne połączenia AJAX w Chrome nie są obsługiwane ze względu na zasady tego samego pochodzenia.
Komunikat o błędzie w Chrome wygląda tak: „Żądania krzyżowe nie są obsługiwane dla schematów protokołów: http, dane, chrome, chrome-extension, https”.
Oznacza to, że chrome tworzy dysk wirtualny dla każdej domeny, aby zachować pliki obsługiwane przez domenę przy użyciu protokołów http / https. Każdy dostęp do plików poza tym dyskiem wirtualnym jest ograniczony na podstawie tej samej zasady pochodzenia. Żądania i odpowiedzi AJAX pojawiają się na http / https, dlatego nie będą działać dla plików lokalnych.
Firefox nie nakłada takich ograniczeń, dlatego Twój kod będzie działał z powodzeniem w przeglądarce Firefox. Istnieją jednak również obejścia dla chrome: patrz tutaj .
źródło
Możesz zaimportować moją bibliotekę:
następnie funkcja
fetchfile(path)
zwróci przesłany plikUwaga: w Google Chrome, jeśli kod HTML jest lokalny, pojawią się błędy, ale zapisanie kodu HTML i plików online, a następnie uruchomienie pliku HTML online działa.
źródło
Aby odczytać tekst pliku lokalnego za
JavaScript
pomocą chrome, przeglądarka chrome powinna uruchomić z argumentem,--allow-file-access-from-files
aby umożliwić JavaScript dostęp do pliku lokalnego, a następnie możesz go odczytać,XmlHttpRequest
wykonując następujące czynności:źródło
Jak odczytać plik lokalny?
Korzystając z tego, załadujesz plik za pomocą loadText (), a następnie JS asynchronicznie poczeka, aż plik zostanie odczytany i załadowany, a następnie wyucza funkcję readText (), umożliwiając kontynuację normalnej logiki JS (możesz również napisać próbny chwyt blok na funkcji loadText () w przypadku wystąpienia błędu), ale w tym przykładzie utrzymuję go na minimalnym poziomie.
źródło
Wiem, że jestem spóźniony na tej imprezie. Pozwól, że pokażę ci, co mam.
Jest to prosty odczyt pliku tekstowego
Mam nadzieję, że to pomoże.
źródło