Как сохранить данные в файл?
В javascript мне нужно сохранить данные в текстовый файл.
Например в php это делается с помощью file_put_contents, который принимает три параметра. Если например записать вот так. file_put_contents('file.txt', 'text', FILE_APPEND); 1. Файл который создается 2. Параметр который нужно записать в файл 3. FILE_APPEND - дописывает данные в конец файла если он сушествует. Без этого флага, файл будет перезаписываться, стирая последние изменения. Как сохранить данные в файл и чтобы можно было добавлять новые данные? Существует аналог из php file_put_contents? |
Katy93, в каком javascript?
Серверном на Node.js? Клиентском в браузере рандомного посетителя вашего сайта? Если второе - то, очевидно, никак. Вы не имеете право трогать жёсткий диск клиента. Вы только можете предложить клиенту сохранить файл, а он может и отказаться. Для этого используется Blob, URL.createObjectURL и <a href="<url>" download="<name>">. Если первое - то для работы с файловой ситсемой есть встроенная библиотека fs. Запись файла, соответственно, fs.writeFile. |
Javascript в браузере не имеет доступа к файловой системе.
Единственный способ что то сохранить - это выполнить "загрузку" через элемент <a> При этом появится стандартное диалоговое окно выбора файла, куда записать. Дописывать естественно нельзя. В Node.js конечно есть возможности записи в файл. |
Цитата:
|
Казвалось бы при чём тут ajax?..
voraa, похоже мы с тобой не угадали, и сохранить файл надо было с клиента на сервере. :lol: |
А при чем тут ajax?
Он не поможет загружать в произвольный файл и дописывать туда. А если устраивает вариант, что каждый раз запрашивается имя файла, то можно без всякого ajax, через блобы и <a> <body> <textarea id=txt rows=5" cols=25></textarea> <br> <button type=button id=sf>Save</button> <script> function textToFile (text, name) { const b = new Blob([text], { type: 'text/plain' }); const url = window.URL.createObjectURL(b); const a = document.createElement('a'); a.href = url; a.download = name || 'text.txt'; a.type = 'text/plain'; a.addEventListener('click', () => { setTimeout(() => window.URL.revokeObjectURL(url), 10000); }) a.click() } document.getElementById('sf').addEventListener('click', () => { textToFile (document.getElementById('txt').value, 'file.txt') }) </script> <body> |
voraa,
Зачем тут нужен a.addEventListener('click'..? Неужели сетТаймаута недостаточно? |
voraa,
Цитата:
|
Тогда вопрос совсем не понятен
Цитата:
|
Часовой пояс GMT +3, время: 13:45. |