Перейти к содержимому

Как сохранить файл в javascript

  • автор:

Запись данных в файл с использованием JavaScript

JavaScript code creating a file.

В работе с веб-страницами и приложениями на JavaScript часто возникает необходимость записи данных в файл. Например, может потребоваться сохранить результаты работы скрипта или какие-то данные, введенные пользователем, в отдельный текстовый файл.

var f = «sometextfile.txt»; writeTextFile(f, «Spoon») writeTextFile(f, «Cheese monkey») writeTextFile(f, «Onion») function writeTextFile(afilename, output)

Однако при попытке выполнить подобный код, скорее всего, возникнут ошибки, связанные с нарушением безопасности или некорректным использованием конструктора.

Можно ли записать данные в файл, используя только JavaScript?

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

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

  • Во-первых, можно использовать встроенный объект Blob и URL.createObjectURL() , чтобы создать ссылку для загрузки файла. Этот метод позволяет генерировать файлы на стороне клиента и предлагать их для загрузки, но не позволяет записывать данные в уже существующий файл или сохранять файлы на диске без вмешательства пользователя.
var data = new Blob(['some text'], ); var url = window.URL.createObjectURL(data);
  • Во-вторых, можно использовать Node.js, платформу, которая позволяет выполнять JavaScript на стороне сервера. Node.js имеет модуль fs (file system), который предоставляет широкие возможности для работы с файлами, включая чтение и запись.
var fs = require('fs'); fs.writeFile('message.txt', 'Hello Node.js', (err) => < if (err) throw err; console.log('The file has been saved!'); >);

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

Курсы javascript

В javascript мне нужно сохранить данные в текстовый файл.
Например в php это делается с помощью file_put_contents, который принимает три параметра. Если например записать вот так.
file_put_contents(‘file.txt’, ‘text’, FILE_APPEND);

1. Файл который создается
2. Параметр который нужно записать в файл
3. FILE_APPEND — дописывает данные в конец файла если он сушествует. Без этого флага, файл будет перезаписываться, стирая последние изменения.

Как сохранить данные в файл и чтобы можно было добавлять новые данные? Существует аналог из php file_put_contents?

23.10.2021, 13:20
Регистрация: 02.01.2010
Сообщений: 6,458

Katy93, в каком javascript?
Серверном на Node.js?
Клиентском в браузере рандомного посетителя вашего сайта?

Если второе — то, очевидно, никак. Вы не имеете право трогать жёсткий диск клиента. Вы только можете предложить клиенту сохранить файл, а он может и отказаться.
Для этого используется Blob, URL.createObjectURL и » download=»»>.

Если первое — то для работы с файловой ситсемой есть встроенная библиотека fs. Запись файла, соответственно, fs.writeFile.

__________________
Последний раз редактировалось Aetae, 23.10.2021 в 13:27 .
23.10.2021, 13:26
Регистрация: 03.02.2020
Сообщений: 2,609

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

В Node.js конечно есть возможности записи в файл.

Как создать Javascript (js) файл.

Многие начинающие веб-программисты, когда они начинают изучать Javascript, сталкиваются с проблемой:

Как создать файл с расширением js, в котором будет размещаться javascript код?

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

В первую очередь, нужно понимать, что javascript – это обычный текст, который написан по определенным правилам. Соответственно, храниться этот текст тоже должен в текстовом документе.

Единственное отличие этого текстового документа от простого текстового файла – это его расширение. Javascript файлы имеют расширение *.js.

Таким образом, вся задача состоит в том, чтобы создать текстовый документ и изменить его расширение.

Хочу рассказать о тех способах создания файла с расширением js, которыми я сам лично пользуюсь.

Все мои уроки по Javascript здесь.

Способ 1. Создание файла js из обычного текстового документа.

Открываем программу «Блокнот», которая входит в стандартный пакет операционной системы Windows.

Если у вас этой программы нет, то можете воспользоваться другим текстовым редактором.

Создаем новый документ и сохраняем его, выбрав в главном меню команду «Файл-сохранить как…»

15-05-2013 19-43-47

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

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

После этой операции, файл для работы с Javascript готов.

Способ 2. Создание файла js в редакторе кода Dreamweaver.

Этим способом я пользуюсь намного чаще, по причине того, что это просто быстрее и удобнее. Создать файл js можно с помощью универсального редактора кода Dreamweaver.

Имейте в виду, что Dreamweaver – это далеко не единственная программа, которая на это способна. Очень многие редакторы кода тоже позволяют также создавать файлы с расширением js.

При первом запуске программы, появляется следующее окно, в котором можно выбрать, что мы хотим создать документ js.

15-05-2013 19-47-14

Выбираем его и сохраняем документ.

Если такое окно приветствия у вас не открылось, то можно воспользоваться главным меню «Файл – Создать новый документ» и выбираем «Javascript».

Если у вас возникнут какие-то вопросы или проблемы с созданием, файлов js таким способом, прошу написать об этом в комментариях.

Все мои уроки по Javascript здесь.

Скачивание и сохранение файлов на диск

Как сделать сохранение файла из HTML-страницы в браузере на диск? Два способа вызова из браузера диалогового окна для скачивания и сохранения файла на диск пользователя с помощью Javascript.

Современный способ

Использование API доступа к файловой системе и метода showSaveFilePicker() .

Чтобы сохранить файл, следует вызвать метод showSaveFilePicker() , который возвращает обещание (promise) с FileSystemFileHandle . Этому методу можно передать желаемое имя файла, например: .

У этого API есть ограничения: работает только когда HTML-документ отдаётся по протоколу HTTPS и открыт не в iframe.

Классический способ

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

Прогрессивное улучшение

В приведенном ниже методе используется API доступа к файловой системе, если он поддерживается, а в остальных случаях используется классический подход с .

const saveFile = async (blob, suggestedName) => < // Обнаружение поддержки браузером API. // API должен поддерживаться // и приложение не запущено в iframe. const supportsFileSystemAccess = 'showSaveFilePicker' in window && (() => < try < return window.self === window.top; >catch < return false; >>)(); // Если File System Access API поддерживается… if (supportsFileSystemAccess) < try < // Показать диалог сохранения файла. const handle = await showSaveFilePicker(< suggestedName, >); // Записать blob в файл. const writable = await handle.createWritable(); await writable.write(blob); await writable.close(); return; > catch (err) < // Обработчик исключения, когда // пользователь отменил скачивание файла if (err.name !== 'AbortError') < console.error(err.name, err.message); return; >> > // Когда API доступа к файловой системе не поддерживается… // Сделать blob URL. const blobURL = URL.createObjectURL(blob); // Сделать невидимый HTML-элемент `` // и включить его в документ const a = document.createElement('a'); a.href = blobURL; a.download = suggestedName; a.style.display = 'none'; document.body.append(a); // Программно кликнуть по ссылке. a.click(); // Уничтожить большой blob URL // и удалить ссылку из документа // после клика по ней setTimeout(() => < URL.revokeObjectURL(blobURL); a.remove(); >, 1000); >;

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

Когда метод пойдёт по классическому сценарию, наличие диалогового окна для выбора места сохранения файла будет зависеть от настроек браузера. Если их не менять, файлы сохраняются в папку по умолчанию (“Загрузки”/”Downloads” в профиле пользователя).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *