Есть ли локальные манипуляции с файлами, которые были сделаны с помощью JavaScript? Я ищу решение, которое может быть реализовано без установки, как, например, требующий Adobe AIR .
В частности, я хотел бы прочитать содержимое из файла и записать это содержимое в другой файл. На данный момент я не беспокоюсь о получении разрешений и просто предполагаю, что у меня уже есть полные разрешения для этих файлов.
javascript
file-access
Джаред
источник
источник
Ответы:
Если пользователь выбирает файл через
<input type="file">
, вы можете прочитать и обработать этот файл, используя File API .Чтение или запись произвольных файлов не допускается. Это нарушение песочницы. Из Википедии -> Javascript -> Безопасность :
ОБНОВЛЕНИЕ 2016 : прямой доступ к файловой системе возможен через API-интерфейс файловой системы , который поддерживается только в Chrome и Opera и может не реализоваться другими браузерами (за исключением Edge ). Подробности см. В ответе Кевина .
источник
Просто обновление функций HTML5 находится на http://www.html5rocks.com/en/tutorials/file/dndfiles/ . Эта превосходная статья подробно объяснит доступ к локальным файлам в JavaScript. Резюме из упомянутой статьи:
Спецификация предоставляет несколько интерфейсов для доступа к файлам из «локальной» файловой системы :
<input type="file" multiple>
или перетащите каталог файлов с рабочего стола).Смотрите комментарий Пола Д. Уэйта ниже.
источник
ОБНОВЛЕНИЕ Эта функция удалена начиная с Firefox 17 (см. Https://bugzilla.mozilla.org/show_bug.cgi?id=546848 ).
В Firefox вы (программист) можете сделать это из файла JavaScript:
и вам (пользователю браузера) будет предложено разрешить доступ. (для Firefox вам просто нужно делать это один раз при каждом запуске браузера)
Если пользователь браузера - это кто-то другой, он должен дать разрешение.
источник
Как упоминалось ранее, FileSystem и File API, вместе с FileWriter API, могут использоваться для чтения и записи файлов из контекста вкладки / окна браузера на клиентский компьютер.
Есть несколько вещей, относящихся к API-интерфейсам FileSystem и FileWriter, о которых вы должны знать, некоторые из которых были упомянуты, но стоит повторить:
Вот простые примеры того, как API-интерфейсы, прямо и косвенно, используются для выполнения этих задач:
BakedGoods *
Написать файл:
Читать файл:
Использование сырых API File, FileWriter и FileSystem
Написать файл:
Читать файл:
Хотя API FileSystem и FileWriter более не соответствуют стандартам, их использование в некоторых случаях может быть оправдано, на мой взгляд, потому что:
Однако, «некоторые случаи» охватывают ваши собственные, решать вам.
* BakedGoods поддерживается здесь только этим парнем :)
источник
NW.js позволяет создавать настольные приложения с использованием Javascript без всех ограничений безопасности, обычно устанавливаемых в браузере. Таким образом, вы можете запускать исполняемые файлы с функцией или создавать / редактировать / читать / записывать / удалять файлы. Вы можете получить доступ к аппаратным средствам, таким как текущее использование процессора или общее количество оперативной памяти в использовании, и т. Д.
С его помощью вы можете создать приложение для Windows, Linux или Mac, которое не требует установки.
источник
Если вы развертываете в Windows, Windows Script Host предлагает очень полезный JScript API для файловой системы и других локальных ресурсов. Однако включение сценариев WSH в локальное веб-приложение может оказаться не таким элегантным, как хотелось бы.
источник
Если у вас есть поле ввода, как
Вы можете получить содержимое файла в формате BLOB:
источник
FSO.js оборачивает новый API-интерфейс файловой системы HTML5, который стандартизируется W3C, и обеспечивает чрезвычайно простой способ чтения, записи или обхода локальной изолированной файловой системы. Он асинхронный, поэтому файловый ввод-вывод не будет мешать работе пользователя. :)
источник
Если вам нужен доступ ко всей файловой системе на клиенте, чтение / запись файлов, просмотр папок на предмет изменений, запуск приложений, шифрование или подпись документов и т. Д., Пожалуйста, посмотрите на JSFS.
Он обеспечивает безопасный и неограниченный доступ с вашей веб-страницы к ресурсам компьютера на клиенте без использования технологии плагинов для браузера, такой как AcitveX или Java Applet. Тем не менее, мир программного обеспечения также должен быть установлен.
Для работы с JSFS у вас должны быть базовые знания по разработке Java и Java EE (Servlets).
Пожалуйста, найдите JSFS здесь: https://github.com/jsfsproject/jsfs . Это бесплатно и под лицензией GPL
источник
Предполагая, что любой файл, который может понадобиться коду JavaScript, должен быть разрешен непосредственно пользователем. Создатели известных браузеров вообще не разрешают JavaScript доступ к файлам.
Основная идея решения заключается в следующем: код JavaScript не может получить доступ к файлу, имея его локальный URL. Но он может использовать файл, имея свой DataURL: поэтому, если пользователь просматривает файл и открывает его, JavaScript должен получить «DataURL» непосредственно из HTML, а не «URL».
Затем он превращает DataURL в файл, используя функцию readAsDataURL и объект FileReader. Источник и более полное руководство с хорошим примером находятся в:
https://developer.mozilla.org/en-US/docs/Web/API/FileReader?redirectlocale=en-US&redirectslug=DOM%2FFileReader
источник
Существует (коммерческий) продукт, localFS, который можно использовать для чтения и записи всей файловой системы на клиентском компьютере.
Небольшое приложение для Windows должно быть установлено, а крошечный файл .js включен в вашу страницу
В качестве функции безопасности доступ к файловой системе может быть ограничен одной папкой и защищен секретным ключом.
https://www.fathsoft.com/localfs
источник
Я только упоминаю это, поскольку никто не упомянул это. Я не знаю ни одного языка программирования, который позволял бы манипулировать базовой файловой системой. Все языки программирования полагаются на прерывания ОС, чтобы на самом деле добиться этого. JavaScript, который запускается в браузере, имеет только браузерные «прерывания» для работы, которые обычно не предоставляют доступ к файловой системе, если браузер не был реализован для поддержки таких прерываний.
При этом очевидный способ получить доступ к файловой системе с использованием JavaScript - это использовать Node.js, который имеет возможность напрямую взаимодействовать с базовой ОС.
источник
источник