Kwert-soft.ru

IT Софт для ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Javascript запись в текстовый файл

Как читать и записывать в файл с помощью JavaScript?

161 [2009-02-25 12:05:00]

Кто-нибудь может дать пример кода для чтения и записи файла с использованием JavaScript?

16 ответов

Для полноты, OP не заявляет, что он хочет сделать это в браузере (если он, как было сказано, вообще невозможен)

Однако javascript сам по себе позволяет это; это можно сделать с помощью javascript на стороне сервера.

Изменить. Эта ссылка была связана с документами Sun, которые теперь были перемещены Oracle.

Чтобы не отставать от времени в документации node.js для класса FileSystem: http://nodejs.org/docs/latest/api/fs.html

Изменить (2). Теперь вы можете читать файлы на стороне клиента с помощью HTML5: http://www.html5rocks.com/en/tutorials/file/dndfiles/

36 Gareth [2009-02-25 12:08:00]

Нет. JavaScript-браузер на стороне javascript не имеет права на запись на клиентский компьютер без большого количества параметров безопасности, которые необходимо отключить.

Будущее здесь! Предложения ближе к завершению, больше нет ActiveX или флэш или Java. Теперь мы можем использовать:

Вы можете использовать Drag/Drop, чтобы получить файл в браузер, или простой элемент управления загрузкой. После того как пользователь выбрал файл, вы можете прочитать его с помощью Javascript: http://www.html5rocks.com/en/tutorials/file/dndfiles/

14 Breton [2009-02-25 12:59:00]

здесь предложение mozilla

это реализовано с помощью компилятора в spidermonkey, а также в adobe extendscript. Кроме того (я думаю) вы получаете объект File в расширениях Firefox.

для более сложных операций с файлами в носороге, вы можете использовать методы java.io.File.

вы не получите ни одного из этих материалов в браузере. Для аналогичной функциональности в браузере вы можете использовать функции базы данных SQL из HTML5, сохранение на клиентах, файлы cookie и объекты флэш-памяти.

11 Temp [2011-10-24 11:34:00]

Эта функция Javascript предоставляет полное диалоговое окно «Сохранить как» для пользователя, который запускает это через браузер. Пользователь нажимает OK, и файл сохраняется.

Изменить: Следующий код работает только с браузером IE, так как Firefox и Chrome считают этот код проблемой безопасности и заблокировали его работу.

Если вы используете JScript (Microsoft Javascript) для локального сценария с использованием WSH (НЕ в браузере!), вы можете использовать Scripting.FileSystemObject для доступа к файловой системе.

Я думаю, что вы можете получить доступ к этому же объекту в IE, если отключить многие настройки безопасности, но это будет очень и очень плохая идея.

Для других, ознакомьтесь с TiddlyWiki, чтобы узнать, как он это делает.

4 gm2008 [2015-05-12 18:20:00]

В контексте браузера Javascript может ПРОЧТИТЬ указанный пользователем файл. См. блог Эрика Бидельмана для подробностей о чтении файла с помощью File API. Однако JavaScript-браузер Javascript не может ЗАПИСАТЬ файловую систему локального компьютера, не отключая некоторые параметры безопасности, поскольку это считается угрозой безопасности для любого веб-сайта, чтобы произвольно изменить вашу локальную файловую систему.

Говоря об этом, есть несколько способов обойти его в зависимости от того, что вы пытаетесь сделать:

Если это ваш собственный сайт, вы можете встроить Java-апплет на веб-страницу. Однако посетитель должен установить Java на локальном компьютере и будет предупрежден об угрозе безопасности. Посетитель должен разрешить загрузку апплета. Java-апплет подобен исполняемому программному обеспечению, имеющему полный доступ к локальному компьютеру.

Chrome поддерживает файловую систему, которая представляет собой изолированную часть локальной файловой системы. Подробнее см. эту страницу. Это позволяет вам временно сохранять вещи на локальном компьютере. Однако это не поддерживается другими браузерами.

Если вы не ограничены браузером, Node.js имеет полный интерфейс файловой системы. См. Здесь документацию файловой системы. Обратите внимание, что Node.js может работать не только на серверах, но и на любом клиентском компьютере, включая окна. Тест-драйв javascript Karma основан на Node.js. Если вам просто нравится программировать в javascript на локальном компьютере, это вариант.

4 Kevin [2016-07-07 03:21:00]

В настоящее время файлы могут быть записаны и прочитаны из контекста вкладки/окна браузера с помощью File, FileWriter и FileSystem, хотя есть предостережения для их использования (см. этот ответ).

Но чтобы ответить на ваш вопрос:

Использование BakedGoods *

Использование необработанных файлов, API FileWriter и FileSystem

Только то, что вы просили правильно? Может быть, может и нет. Последние два из API:

  • В настоящее время реализованы только в браузерах Chrome (Opera) и Chrome.
  • Были сняты со стандарта W3C, и на данный момент являются фирменными API
  • Может быть удалено из исполняющих браузеров в будущем
  • Устранить создание файлов в песочнице (место, за пределами которого файлы не могут повлиять) на диске

Кроме того, спецификация FileSystem не определяет никаких рекомендаций о том, как структуры каталогов должны появляться на диске. Например, в браузерах, основанных на хром, песочница имеет виртуальную файловую систему (структура каталогов, которая не обязательно существует на диске в той же форме, что и при доступе из браузера), в пределах которой каталоги и файлы, созданные с помощью API-интерфейсов.

Таким образом, хотя вы можете писать файлы в систему с API-интерфейсами, поиск файлов без API (ну, без API-интерфейса FileSystem) может быть нетривиальным делом.

Читать еще:  Javascript json в строку

Если вы можете справиться с этими проблемами/ограничениями, эти API — это почти единственный способ сделать то, что вы просили.

Если вы открыты для не-родных решений, Silverlight также позволяет создавать файлы ввода/вывода из конкурса вкладок/окон через IsolatedStorage. Однако управляемый код необходим для использования этого средства; решение, требующее написания такого кода, выходит за рамки этого вопроса.

Конечно, решение, которое использует дополнительный управляемый код, оставляя его только с Javascript для записи, вполне входит в сферу этого вопроса;):

* BakedGoods — это библиотека Javascript, которая устанавливает единый интерфейс, который может использоваться для проведения общих операций хранения во всех родных и некоторых нелокальных хранилищах. Это поддерживается этим парнем прямо здесь:).

Блог о Frontend-разработке, ботоводстве, iMacros + Javascript

Исследование различных веб-технологий, математических алгоритмов и проектирование веб-приложений.

Рубрики

Комменты

  • Наталья к записи [Урок 17] . Копирование, удаление и переименование папок и файлов с помощью iMacros+JS
  • Наталья к записи [Урок 17] . Копирование, удаление и переименование папок и файлов с помощью iMacros+JS
  • Натали к записи [Урок 9] . Чтение и запись txt-файлов в iMacros. Разбираем говнокод и смотрим «Best Practice».
  • Натали к записи [Урок 9] . Чтение и запись txt-файлов в iMacros. Разбираем говнокод и смотрим «Best Practice».
  • InfSub к записи [Урок 9] . Чтение и запись txt-файлов в iMacros. Разбираем говнокод и смотрим «Best Practice».

[Урок 9] . Чтение и запись txt-файлов в iMacros. Разбираем говнокод и смотрим «Best Practice».

Вот мы неспеша и подобрались к очень интересной теме. Запись и сохранение информации при помощи iMacros и Javascript — вещь крайне необходимая. Подобные функции нам понадобятся постоянно и везде. Допустим, у нас есть текстовый файл, а в нем список групп вконтакте, в которые нужно зайти и оставить в каждой рекламное сообщение с предложением увеличить пенис, например. Или наоборот, нам понадобится снять позиции сайтов в гугле или яндексе по разным запросам и сохранить все это в файл или таблицу Excel.

Как НЕ нужно считывать и сохранять текстовые файлы

У меня слезы на глазах наворачивались, когда я видел, как другие люди пытались решить подобную задачу, нестандартно эксплотируя функционал iMacros. Сложно было удержаться, чтобы не переименовать функции во что-то более нормальное, но решил оставить как есть, пример из интернета:

Так записывать в файлы НЕ надо:

Во-первых, привыкайте называть функции и переменные нормальными именами, желательно английскими и в camelCase, например: function saveToFile (text) <. >. Данное решение, несмотря на свою убогость, рабочее, но если нам понадобится чтение из файла, такой подход не подойдет, придется искать костыли и грабли с совершенно другой логикой. Код будет неконсистентный, к тому же есть решение намного лучше.

Вот еще плохой пример с просторов интернета, это макрос для автологина на почту.

Так читать файлы НЕ надо:

Такой жуткий код отпугнет не только новичка, но и профи. Тут используются стандартные функции для работы с форматом CSV и они ужасны. Дело даже не в говнокоде, а в том, что при таком подходе мы не имеем удобного доступа к каждой ячейке таблицы, много лишних промежуточных переменных. Еще огромный минус, это скорость работы скрипта, написанного подобным образом. Это не пустословие, я как-то делал бота в таком стиле, он брал, добавлял и изменял информацию в таблице, объемом несколько сотен строк — для операции поиска, перебора и замены значений уходило около минуты(!). При помощи Javascript, это можно сделать за тысячные доли секунды. В следующем уроке я вам расскажу про формат CSV, и покажу во много раз более изящный и простой способ работать с Excel-таблицами. Вы сами увидите, как можно удобно и приятно манипулировать даже большими табличными данными.

Правильная работа с txt-файлами при помощи iMacros и Javascript

В прошлых уроках вы уже сталкивались с использованием Components и Classes в iMacros. Там, разумеется, есть классы для чтения и записи файлов. Но, сегодня мы не будем их использовать. Помните, мы смотрели содержимое this при помощи window.console.log(this) ;. Дело в том, что если там покопаться, можно найти объект imns, внутри которого есть объект FIO, которые отвечает за файловый ввод-вывод, этот объект используется самим iMacros, например, когда вы в боковой панели сохраняете макрос или открываете его для редактирования.

Рассмотрим несколько необходимых нам методов у этого объекта:
imns.FIO.readTextFile(file) — считывает текстовый файл и возвращает его содержимое
imns.FIO.writeTextFile(file, text) — создает текстовый файл, если он не был создан и записывает в него текст
imns.FIO.appendTextFile(file, text) — создает текстовый файл, если он не был создан, либо открывает существующий файл и в конец дописывает текст(удобно для записи логов и статистики в файлы)

Читать еще:  Char array to string java

Для работы с вводом-выводом обычно используется дескриптор файла, это своего рода указатель на файл, в нашем случае для его получения используется метод imns.FIO.openNode(pathFileName); . Все функции выше в качестве параметра file принимают именно дескриптор файла а не строку с указанием пути к файлу.

Чтение txt-файла и быстрый доступ к любой строке

У текстового файла необязательно должно быть расширение «.txt», могут быть и любые другие. Давайте создадим маленький текстовый файл с несколькими ссылками и сохраним его в папку C:BOTSiMacros.

links.txt

Теперь напишем функцию, которая будет получать в качестве параметра путь к файлу а возвращать содержимое файла.

Обратите внимание, что при указании пути к файлу мы экранируем бэкслеши, поскольку это спецсимвол. Для UnixLinux систем путь бы выглядел иначе, например «/var/imacros/links.txt» , слеши поменяли свое направление и их экранировать не надо. Учтите эту разницу при написании кроссплатформенных скриптов под разные операционные системы.

Уже неплохо, но хотелось бы иметь удобный доступ к каждой строке и возможность проходиться по строкам в цикле. Для этого давайте преобразуем текст в массив, где каждый элемент массива — это отдельная строка. Еще, мы оставим возможность получать текст целиком. То есть, теперь наша функция будет возвращать не строку, а объект, содержащий в себе текст целиком и массив строк:

Посмотрите, что получилось, мы одной строкой загружаем файл в переменную и дальше можем делать с ним что угодно. Доступ к строкам по индексу — это удобно, но есть еще более крутой вариант, где доступ будет осуществляться не только по индексам, но и по ключам, я говорю про JSON. О нем напишу позже.

Запись текста в txt(текстовый файл)

Для записи текста в файлы, мы будем использовать все тот же объект iMacros — imns.FIO. Тут кода получится поменьше.

Данный код создаст файл text.txt и запишет туда наш текст. Если мы запустим макрос несколько раз, то все данные каждый раз будут перезаписываться новыми данными.

Добавление в конец текстового файла, пишем лог

Иногда бывает удобно просто дописывать в файл какие-либо данные, например при ведении логов. Давайте напишем функцию для добавления текста в конец любого файла и сделаем небольшую обертку для одновременной записи логов и в файл и в консоль. Плюс, мы будем автоматически проставлять дату и время для каждого сообщения.

Если вы все правильно сделали, то у вас получится вот так:

Примечание: если у вас в консоли или в файле выводятся иероглифы, то нужно сохранить файл вашего скрипта в кодировке UTF-8 с BOM. Я использую Sublime Text 3 и для удобной работы с кодировками у меня установлен плагин Encoding Helper. В данном редакторе кодировка меняется из меню File.

На сегодня, думаю хватит. В следующих уроках мы разберем такие популярные форматы файлов, как CSV и JSON, научимся генерировать и читать файлы, следуя правилам этих форматов и конечно, напишем удобные функции для работы с ними.

Генерируем файлы при помощи JavaScript

Часто при разработке веб приложения возникает необходимость отдавать файл пользователю на скачку. Содержание такого файла может быть совершенно разным, начиная от конфигурационных данных, заканчивая отчётами, статистической информацией, которая генерируется автоматически.

Для организации подобной системы нужно написать скрипт, который сделает выборку из базы данных, запишет полученные результаты в файл и даст его на скачку пользователю. В этом уроке, мы продемонстрируем новый подход к этой задаче.

Мы создадим специальный jQuery плагин, который в сочетании с php скриптом, сможет сгенерировать текстовый файл, и отдаст его в распоряжение пользователя. Инициализация скачки будет происходить через JavaScript.

Начнём работу с написания простого HTML кода, который будет содержать текстовое поле и кнопку.

index.html

В этом примере мы используем doctype HTML5 для того, чтобы иметь возможность пользоваться новыми технологиями. Для того чтобы всё работало и в IE, нам необходимо подключить специальный HTML5 скрипт.

В самом конце файла мы добавим подключение к jQuery, плагин generateFile, который напишем чуть позже и script.js откуда будет вестись управление программой.

Вообще говоря в JavaScript нет встроенной возможности генерации файлов. Однако существуют различные подходы для решения этой задачи (одно из них использование технологии Flash), но в нашем случае мы будем использовать PHP скрипт.

download.php

В этом PHP скрипте мы создаём имя файла и генерируем необходимые нам заголовки. Плагин, который мы напишем, будет передавать параметры через POST запрос: filename и content. Скрипт будет считывать полученные данные, после чего создаст заголовки и отдаст сформированный файл на скачку.

jQuery

Как вы уже поняли, наш плагин делает POST запрос к файлу download.php. Для передачи данных мы могли бы использовать AJAX, но не на этот раз.

В нашем примере мы будем генерировать скрытый iframe, куда будем записывать данные из формы, а потом отправлять их через POST запрос.

Читать еще:  Android webview javascript

Давайте, наконец, приступим:

assets/jquery.generateFile.js

Обратите внимание на функцию setTimeout(). Без неё мы не сможем воспользоваться iframe в Internet Explorer. В нашем случае мы немного тянем время для того, чтобы DOM сформировался до конца.

А вот и применение нашего плагина:

assets/script.js

При вызове $.generateFile, вам необходимо передать имя файла и текст файлу download.php.

Вывод

Подобным образом можно создать генерацию doc файлов или файлов других форматов, основанных на Microsoft Office XML. Надеюсь, урок был для вас полезен.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.tutorialzine.com/2011/05/generating-files-javascript-php/
Перевел: Станислав Протасевич
Урок создан: 28 Июня 2011
Просмотров: 37396
Правила перепечатки

5 последних уроков рубрики «PHP»

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

Как записать значения текстового поля в текстовый файл перед отправкой формы, используя JavaScript

Я новичок в сценарии Java.

Я реализую некоторые веб-страницы.
Теперь у меня есть текстовые поля TextBox (чтобы пользователи могли ввести IP-адрес сервера, имя пользователя и пароль), кнопку загрузки файла и кнопку отправки. Я хочу вызвать функцию сценария Javascipt, которая берет значения из текстового поля и сохраняет их в текстовом файле. на сервере перед нажатием кнопки подтверждения.

С помощью сценария Java я могу читать значения, но когда я пытаюсь записать значения в файл, это не работает. Когда я искал в сети, я нашел решение с ActiveXObject, которое работает только в IE. Но я ищу решение, которое работает во всех браузерах.

Моя среда поддерживает только Javascript и PHP.

Пожалуйста, помогите мне..

Решение

Вы могли бы использовать onchange Событие привязывается к форме и сохраняет данные в текстовый файл каждый раз, когда происходит изменение. Это делается путем автоматической отправки формы через AJAX-запрос на ваш сервер.

Решение Javascript и PHP:

Этот метод будет отправлять данные в файл PHP вашего сервера каждый раз, когда кто-то что-то изменяет в одной из ваших форм. Простое нажатие клавиши вызовет это событие. Файл PHP может делать все что угодно, в этом случае мы просто запишем содержимое полей формы в простой текстовый файл.

PHP-код:


Пример вывода:
Тема: Hello World
Сообщение: это пример отправки запроса AJAX в PHP и записи его в файл.

Решение jQuery и PHP:

Здесь мы собираемся хранить содержимое вашей формы в формате JSON, потому что с нами проще всего работать. Файл JSON будет содержать все поля в форме, и мы можем прочитать его позже с помощью PHP, используя json_decode()

PHP-код:

Пример сохранения в формате JSON будет выглядеть следующим образом:

Другие решения

Почему бы не опубликовать все данные на сервере и позволить php обрабатывать создание файлов.

Вы можете использовать ajax для отправки формы на сервер, сохранения данных во временном файле и возврата URL-адреса, указывающего на файл. Когда браузер получит ответ ajax, содержащий URL-адрес файла, перенаправьте браузер на URL-адрес. Браузер загрузит файл после.

Для AJAX вы можете использовать JQuery http://api.jquery.com/jquery.ajax/ Чтобы использовать ajax для публикации формы, взгляните на этот ответ. Пример JQuery Ajax POST с PHP

Чтобы перенаправить браузер с клиента, вы можете написать, например, window.location.href = ‘myurl.com/foo/bar’

Если я правильно понимаю вашу проблему
1) пользователь, пароль, IP должны быть записаны в файл на сервере
2) Значения должны быть представлены

Прежде всего, вы не можете писать прямо на сервер из браузера. Данные всегда должны быть отправлены / опубликованы в той или иной форме.

Одним из вариантов может быть:

  • отправить данные о событии на сервер в фоновом режиме (с помощью AJAX или около того)
  • проверил данные на сервере и после проверки включил кнопку Отправить

Вот демо-версия (которая только на стороне клиента, на стороне сервера, которую вы должны будете реализовать)

Ссылка на основную публикацию
Adblock
detector