Как сохранить данные в файл?
В 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, время: 11:59. |