Czy ktoś może podać przykładowy kod do odczytu i zapisu pliku przy użyciu JavaScript?
javascript
file-io
user4642212
źródło
źródło
Odpowiedzi:
Dokładnie rzecz biorąc, OP nie stwierdza, że zamierza to zrobić w przeglądarce (jeśli tak, jak stwierdzono, jest to generalnie niemożliwe)
Jednak javascript jako taki pozwala na to; można to zrobić za pomocą javascript po stronie serwera.
Zobacz tę dokumentację dotyczącą klasy pliku JavascriptEdycja : to łącze prowadziło do dokumentów Sun, które zostały teraz przeniesione przez Oracle.
Aby nadążyć za czasem, oto dokumentacja node.js dla klasy FileSystem: http://nodejs.org/docs/latest/api/fs.html
Edycja (2) : Możesz teraz czytać pliki po stronie klienta za pomocą HTML5: http://www.html5rocks.com/en/tutorials/file/dndfiles/
źródło
Nie. JavaScript działający po stronie przeglądarki nie ma uprawnień do zapisu na komputerze klienta bez konieczności wyłączenia wielu opcji zabezpieczeń
źródło
This answer is not useful
.Przyszłość jest tutaj! Propozycje są bliżej ukończenia, koniec z ActiveX, flash lub java. Teraz możemy użyć:
Interfejsy API systemu plików
Natywny dostęp do plików metodą „przeciągnij i upuść”
Możesz użyć przeciągnij / upuść, aby pobrać plik do przeglądarki lub prostej kontrolki przesyłania. Gdy użytkownik wybierze plik, możesz go przeczytać w / Javascript: http://www.html5rocks.com/en/tutorials/file/dndfiles/
źródło
oto propozycja Mozilli
http://www-archive.mozilla.org/js/js-file-object.html
jest to realizowane za pomocą przełącznika kompilacji w spidermonkey, a także w rozszerzonym skrypcie Adobe. Dodatkowo (myślę) otrzymujesz obiekt File w rozszerzeniach Firefoksa.
rhino ma (raczej podstawową) funkcję readFile https://developer.mozilla.org/en/Rhino_Shell
w przypadku bardziej złożonych operacji na plikach w rhino możesz użyć metod java.io.File.
nie dostaniesz jednak żadnego z tych rzeczy w przeglądarce. Aby uzyskać podobną funkcjonalność w przeglądarce, możesz użyć funkcji bazy danych SQL z HTML5, trwałości po stronie klienta, plików cookie i obiektów pamięci flash.
źródło
Ta funkcja JavaScript prezentuje pełne okno dialogowe „Zapisz jako” dla użytkownika, który uruchamia to za pośrednictwem przeglądarki. Użytkownik naciska OK i plik zostaje zapisany.
Edycja: Poniższy kod działa tylko z przeglądarką IE, ponieważ Firefox i Chrome uznały ten kod za problem z bezpieczeństwem i zablokowały jego działanie.
Wywołaj funkcję:
źródło
Jeśli używasz JScript (Microsoft's Javascript) do wykonywania lokalnych skryptów za pomocą WSH (NIE w przeglądarce!), Możesz użyć,
Scripting.FileSystemObject
aby uzyskać dostęp do systemu plików.Myślę, że możesz uzyskać dostęp do tego samego obiektu w IE, jeśli wyłączysz wiele ustawień bezpieczeństwa, ale byłby to bardzo, bardzo zły pomysł.
MSDN tutaj
źródło
hta
aplikacji i to rozwiązujeObecnie pliki można zapisywać i odczytywać z kontekstu karty / okna przeglądarki za pomocą interfejsów API File , FileWriter i FileSystem , chociaż istnieją zastrzeżenia co do ich użycia (patrz koniec tej odpowiedzi).
Ale żeby odpowiedzieć na twoje pytanie:
Korzystanie z BakedGoods *
Zapisz plik:
Czytaj plik:
Korzystanie z nieprzetworzonych interfejsów API File, FileWriter i FileSystem
Zapisz plik:
Czytaj plik:
Tylko o co prosiłeś, prawda? Może, może nie. Ostatnie dwa interfejsy API:
Ponadto specyfikacja FileSystem nie określa żadnych wytycznych dotyczących wyglądu struktur katalogów na dysku. Na przykład w przeglądarkach opartych na Chromium piaskownica ma wirtualny system plików (struktura katalogów, która niekoniecznie istnieje na dysku w takiej samej formie, jaką ma przy dostępie z poziomu przeglądarki), w którym katalogi i pliki utworzone za pomocą Umieszczane są interfejsy API.
Więc chociaż możesz być w stanie zapisać pliki w systemie za pomocą API, zlokalizowanie plików bez API (no cóż, bez API FileSystem) może być nietrywialną sprawą.
Jeśli możesz poradzić sobie z tymi problemami / ograniczeniami, te interfejsy API są prawie jedynym natywnym sposobem robienia tego, o co prosiłeś.
Jeśli jesteś otwarty na rozwiązania inne niż natywne, Silverlight umożliwia również we / wy plików z konkursu karty / okna za pośrednictwem IsolatedStorage . Jednak kod zarządzany do korzystania z tej funkcji wymagany jest ; rozwiązanie wymagające napisania takiego kodu wykracza poza zakres tego pytania.
Oczywiście rozwiązanie, które korzysta z komplementarnego kodu zarządzanego, pozostawiając tylko Javascript do pisania, mieści się w zakresie tego pytania;):
* BakedGoods to biblioteka Javascript, która tworzy jednolity interfejs, który może być używany do przeprowadzania typowych operacji przechowywania we wszystkich natywnych i niektórych innych niż natywnych urządzeniach magazynujących. Utrzymuje go ten gość tutaj:).
źródło
W przeglądarce Firefox:
Zobacz https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O
Dla innych sprawdź aplikację TiddlyWiki, aby zobaczyć, jak to robi.
źródło
W kontekście przeglądarki Javascript może CZYTAĆ plik określony przez użytkownika. Zobacz blog Erica Bidelmana, aby uzyskać szczegółowe informacje na temat odczytywania plików za pomocą interfejsu API plików. Jednak skrypt Javascript oparty na przeglądarce nie może NAPISAĆ systemu plików komputera lokalnego bez wyłączania niektórych ustawień zabezpieczeń, ponieważ dowolna zmiana lokalnego systemu plików jest traktowana jako zagrożenie bezpieczeństwa dla dowolnej witryny internetowej.
Mówiąc to, istnieje kilka sposobów obejścia tego w zależności od tego, co próbujesz zrobić:
Jeśli jest to Twoja własna witryna, możesz osadzić aplet Java na stronie internetowej. Jednak odwiedzający musi zainstalować Javę na komputerze lokalnym i zostanie ostrzeżony o zagrożeniu bezpieczeństwa. Gość musi zezwolić na załadowanie apletu. Aplet Java jest jak wykonywalne oprogramowanie, które ma pełny dostęp do komputera lokalnego.
Chrome obsługuje system plików będący częścią lokalnego systemu plików w trybie piaskownicy. Szczegółowe informacje można znaleźć na tej stronie . Zapewnia to prawdopodobnie tymczasowe zapisywanie rzeczy lokalnie. Jednak nie jest to obsługiwane przez inne przeglądarki.
Jeśli nie jesteś ograniczony do przeglądarki, Node.js ma pełny interfejs systemu plików. Zobacz tutaj dokumentację dotyczącą systemu plików . Zwróć uwagę, że Node.js może działać nie tylko na serwerach, ale także na dowolnym komputerze klienckim, w tym Windows. Moduł uruchamiający testy javascript Karma jest oparty na Node.js. Jeśli po prostu lubisz programować w JavaScript na komputerze lokalnym, jest to opcja.
źródło
Aby utworzyć plik, spróbuj
Utwórz katalog na dysku C, ponieważ system Windows jest zabezpieczony przed zapisem z Internetu, np. Utwórz folder o nazwie „tmp” na dysku C.
źródło
Będziesz musiał skorzystać z Flasha, Java lub Silverlight. W przypadku Silverlight będziesz patrzeć na izolowany magazyn . Dzięki temu będziesz zapisywać pliki w swoim własnym placu zabaw na dysku użytkownika. Nie pozwoli ci jednak pisać poza placem zabaw.
źródło
Nie możesz tego zrobić w żaden sposób w różnych przeglądarkach. IE ma metody umożliwiające „zaufanym” aplikacjom używanie obiektów ActiveX do odczytu / zapisu plików, ale niestety to wszystko.
Jeśli chcesz zapisać informacje o użytkowniku, najprawdopodobniej będziesz musiał użyć plików cookie.
źródło
Z testu ReactJS następujący kod pomyślnie zapisuje plik:
Plik jest zapisywany w katalogu zawierającym testy, więc zapis do rzeczywistego pliku JSON „* .json” tworzy pętlę!
źródło
Nie można wykonywać operacji we / wy plików po stronie klienta za pomocą javascript, ponieważ stanowiłoby to zagrożenie bezpieczeństwa. Musiałbyś albo zmusić ich do pobrania i uruchomienia exe, albo jeśli plik znajduje się na twoim serwerze, użyj AJAX i języka po stronie serwera, takiego jak PHP, aby wykonać operacje we / wy po stronie serwera
źródło
Korzystanie z rozszerzeń JavaScript
Korzystanie ze strony internetowej i obiektów Active X.
źródło
Oto rozwiązanie do zapisu dla chrome v52 + (użytkownik nadal musi wybrać docelową kowalkę ...)
źródło: StreamSaver.js
Najlepiej nadaje się do pisania dużych danych generowanych po stronie klienta.
W przeciwnym razie sugeruję użycie FileSaver.js do zapisania Blob / Files
źródło