Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.10.2021, 13:05
Аспирант
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 28.12.2018
Сообщений: 86

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

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

Как сохранить данные в файл и чтобы можно было добавлять новые данные? Существует аналог из php file_put_contents?
Ответить с цитированием
  #2 (permalink)  
Старый 23.10.2021, 13:20
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,027

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

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

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

Последний раз редактировалось Aetae, 23.10.2021 в 13:27.
Ответить с цитированием
  #3 (permalink)  
Старый 23.10.2021, 13:26
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 1,425

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

В Node.js конечно есть возможности записи в файл.
Ответить с цитированием
  #4 (permalink)  
Старый 23.10.2021, 17:22
Аспирант
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 28.12.2018
Сообщений: 86

Цитата:
Javascript в браузере не имеет доступа к файловой системе.
Единственный способ что то сохранить - это выполнить "загрузку" через элемент <a> При этом появится стандартное диалоговое окно выбора файла, куда записать. Дописывать естественно нельзя.

В Node.js конечно есть возможности записи в файл.
Ладно через ajax все сделаю.
Ответить с цитированием
  #5 (permalink)  
Старый 23.10.2021, 17:35
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,027

Казвалось бы при чём тут ajax?..

voraa, похоже мы с тобой не угадали, и сохранить файл надо было с клиента на сервере.
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 23.10.2021, 17:36
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 1,425

А при чем тут 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>
Ответить с цитированием
  #7 (permalink)  
Старый 23.10.2021, 19:02
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 915

voraa,
Зачем тут нужен a.addEventListener('click'..?
Неужели сетТаймаута недостаточно?
Ответить с цитированием
  #8 (permalink)  
Старый 25.10.2021, 21:29
Аспирант
Отправить личное сообщение для Katy93 Посмотреть профиль Найти все сообщения от Katy93
 
Регистрация: 28.12.2018
Сообщений: 86

voraa,
Цитата:
А при чем тут ajax?
Отправлю данные на сервер в файл php и там запишу их в file_put_contents с флагом FILE_APPEND. При повторном вызове кода, файл будет дописываться. Я так уже сделала, работает.
Ответить с цитированием
  #9 (permalink)  
Старый 25.10.2021, 23:57
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 1,425

Тогда вопрос совсем не понятен
Сообщение от Katy93
В javascript мне нужно сохранить данные в текстовый файл.
Например в php это делается с помощью file_put_contents, который принимает три параметра. Если например записать вот так.
file_put_contents('file.txt', 'text', FILE_APPEND);
Если на сервере php, и сохранять надо на сервере то при чем тут javascript?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как писать бинарно в файл на php wadim2 Серверные языки и технологии 6 29.07.2021 16:00
Как распечатать/выгрузить файл на диск? nmurzin AJAX и COMET 14 12.01.2021 15:54
Как вызвать диалог SaveFile и сохранить текст из type=text в текстовый файл sprokuda Элементы интерфейса 1 09.04.2019 17:31
Как сохранить данные в cookie AJAX Diamond07 AJAX и COMET 3 07.12.2015 01:04
Как сохранить данные в файл? Возможно такое на JavaScript? Forgott Общие вопросы Javascript 35 26.06.2015 20:11