Czy istnieje manipulacja lokalnymi plikami, która została wykonana za pomocą JavaScript? Szukam rozwiązania, które można osiągnąć bez śladu instalacji, jak wymaganie Adobe AIR .
W szczególności chciałbym przeczytać zawartość pliku i zapisać tę zawartość w innym pliku. W tym momencie nie martwię się o uzyskanie uprawnień i po prostu zakładam, że mam już pełne uprawnienia do tych plików.
javascript
file-access
Jared
źródło
źródło
Odpowiedzi:
Jeśli użytkownik wybierze plik przez
<input type="file">
, możesz odczytać i przetworzyć ten plik za pomocą interfejsu File API .Czytanie lub zapisywanie dowolnych plików jest niedozwolone z założenia. To naruszenie piaskownicy. Z Wikipedii -> Javascript -> Bezpieczeństwo :
AKTUALIZACJA 2016 : Bezpośredni dostęp do systemu plików jest możliwy za pośrednictwem API systemu plików , które jest obsługiwane tylko przez Chrome i Operę i może nie być implementowane przez inne przeglądarki (z wyjątkiem Edge ). Aby uzyskać szczegółowe informacje, zobacz odpowiedź Kevina .
źródło
Jest tylko aktualizacja funkcji HTML5 adresem http://www.html5rocks.com/en/tutorials/file/dndfiles/ . Ten wspaniały artykuł szczegółowo wyjaśnia dostęp do plików lokalnych w JavaScript. Podsumowanie wspomnianego artykułu:
Specyfikacja zapewnia kilka interfejsów do uzyskiwania dostępu do plików z „lokalnego” systemu plików :
<input type="file" multiple>
lub przeciągnij katalog plików z pulpitu).Zobacz komentarz Paula D. Waite'a poniżej.
źródło
AKTUALIZACJA Ta funkcja została usunięta od wersji Firefox 17 (patrz https://bugzilla.mozilla.org/show_bug.cgi?id=546848 ).
W przeglądarce Firefox możesz (programista) zrobić to z poziomu pliku JavaScript:
a Ty (użytkownik przeglądarki) zostaniesz poproszony o zezwolenie na dostęp. (w przypadku przeglądarki Firefox wystarczy to zrobić raz przy każdym uruchomieniu przeglądarki)
Jeśli użytkownik przeglądarki jest kimś innym, musi udzielić pozwolenia.
źródło
Jak wspomniano wcześniej, FileSystem i File API, wraz z FileWriter API, mogą być używane do odczytywania i zapisywania plików z kontekstu karty / okna przeglądarki na komputer kliencki.
Istnieje kilka rzeczy związanych z interfejsami API FileSystem i FileWriter, o których powinieneś wiedzieć, z których niektóre zostały wspomniane, ale warto je powtórzyć:
Oto proste przykłady tego, jak interfejsy API są używane, bezpośrednio i pośrednio, w tandemie do wykonywania następujących czynności:
BakedGoods *
Zapisz plik:
Czytaj plik:
Korzystanie z nieprzetworzonych interfejsów API File, FileWriter i FileSystem
Zapisz plik:
Czytaj plik:
Chociaż API FileSystem i FileWriter nie są już na ścieżce standardów, moim zdaniem ich użycie może być uzasadnione w niektórych przypadkach, ponieważ:
Jednak to, czy „niektóre przypadki” obejmują twoje własne, należy do ciebie.
* BakedGoods jest utrzymywane przez nikogo innego, jak tylko tego gościa tutaj :)
źródło
NW.js umożliwia tworzenie aplikacji komputerowych przy użyciu Javascript bez wszystkich ograniczeń bezpieczeństwa, które zwykle nakłada się na przeglądarkę. Możesz więc uruchamiać pliki wykonywalne z funkcją lub tworzyć / edytować / odczytywać / zapisywać / usuwać pliki. Możesz uzyskać dostęp do sprzętu, takiego jak bieżące użycie procesora lub całkowita używana pamięć RAM itp.
Możesz stworzyć aplikację desktopową dla systemu Windows, Linux lub Mac, która nie wymaga żadnej instalacji.
Oto framework dla NW.js, Universal GUI:
źródło
Jeśli wdrażasz w systemie Windows, Host skryptów systemu Windows oferuje bardzo przydatny interfejs API JScript dla systemu plików i innych zasobów lokalnych. Włączanie skryptów WSH do lokalnej aplikacji internetowej może jednak nie być tak eleganckie, jak byś sobie życzył.
źródło
Jeśli masz pole wprowadzania, takie jak
Możesz dostać się do zawartości pliku w formacie BLOB:
źródło
FSO.js otacza nowy interfejs API systemu plików HTML5, który jest standaryzowany przez W3C i zapewnia niezwykle łatwy sposób odczytu, zapisu lub przechodzenia przez lokalny system plików w trybie piaskownicy. Jest asynchroniczny, więc operacje wejścia / wyjścia pliku nie będą przeszkadzać użytkownikowi. :)
źródło
Jeśli potrzebujesz dostępu do całego systemu plików na kliencie, odczytu / zapisu plików, obserwowania folderów pod kątem zmian, uruchamiania aplikacji, szyfrowania lub podpisywania dokumentów itp., Zapoznaj się z JSFS.
Umożliwia bezpieczny i nieograniczony dostęp ze strony internetowej do zasobów komputera klienta bez korzystania z technologii wtyczek przeglądarki, takich jak AcitveX lub Java Applet. Jednak należy również zainstalować oprogramowanie.
Aby pracować z JSFS, należy posiadać podstawową wiedzę na temat programowania w Javie i Java EE (serwlety).
Proszę znaleźć JSFS tutaj: https://github.com/jsfsproject/jsfs . Jest bezpłatny i objęty licencją GPL
źródło
Zakładając, że każdy plik, którego może potrzebować kod JavaScript, powinien być dozwolony bezpośrednio przez użytkownika. Twórcy znanych przeglądarek generalnie nie pozwalają JavaScriptowi na dostęp do plików.
Główną ideą rozwiązania jest to, że kod JavaScript nie może uzyskać dostępu do pliku, mając jego lokalny adres URL. Ale może użyć tego pliku, mając jego DataURL: więc jeśli użytkownik przegląda plik i otwiera go, JavaScript powinien pobierać „DataURL” bezpośrednio z HTML, zamiast „URL”.
Następnie przekształca DataURL w plik, używając funkcji readAsDataURL i obiektu FileReader. Źródło i bardziej kompletny przewodnik z ładnym przykładem znajdują się w:
https://developer.mozilla.org/en-US/docs/Web/API/FileReader?redirectlocale=en-US&redirectslug=DOM%2FFileReader
źródło
Istnieje (komercyjny) produkt „localFS”, który może być używany do odczytu i zapisu całego systemu plików na komputerze klienckim.
Musi być zainstalowana mała aplikacja Windows i mały plik .js dołączony do twojej strony.
Ze względów bezpieczeństwa dostęp do systemu plików może być ograniczony do jednego folderu i chroniony tajnym kluczem.
https://www.fathsoft.com/localfs
źródło
źródło