JavaScript Save As: сохранение данных в файл txt

Полезные скрипты
Ответить
Аватара пользователя
mihas
Администратор
Сообщения: 1196
Зарегистрирован: 18 авг 2004, 16:58
Откуда: Москва
Контактная информация:

JavaScript Save As: сохранение данных в файл txt

Сообщение mihas »

Когда писал спектральный калькулятор решил, что полезно будет сделать кнопочку, которая сохраняла бы результат работы скрипта в текстовый файл, а не только результат бы выводился в окно. Чтобы пользователю не открывать notepad и копировать туда данные со страницы а получить результат в виде txt-файла. К сожалению корректного лаконичного решения исключительно на JavaScript нет, придется немного задействовать php. Вот мое решение. Для начала создадим на странице html-костыль (скрытый input) и кнопку с именем "SaveAs" для отправки нужного нам содержания - переменной аbc - php-скрипту save_as.php:

Код: Выделить всё

<form name="post" method="post" action="http://...адрес.../save_as.php">
<input type="hidden" name="color" value="" />
<input value="SaveAs" onclick="saveAs();" />
</form>
Теперь на JavaScript напишем функцию saveAs():

Код: Выделить всё

function saveAs(){
document.post.color.value = abc;
document.post.submit();
}
Все готово для отправки данных - переменной abc - методом POST. Теперь их нужно офрмить в виде txt-файла, который пользователю будет предложено сохранить себе на компьютер, здесь лаконично и красиво нам поможет скрипт на php - save_as.php. Вот его содержание:

Код: Выделить всё

<?php
header("Content-type:application/txt");
$dateandtime = date ("Y_m_d_H_i_s_A");
header("Content-Disposition:attachment;filename=color_data_$dateandtime.txt");
echo $_POST['color'];
?>
В результате у пользователя не откроется страница save_as.php а ему будет предложено не уходя со страницы, где был запущен наш процесс сохранения, сохранить или не сохранять текстовый документ color_data_текущая_дата_и_время.txt у себя на компьютере. Никаких копий файла color_data_текущая_дата_и_время.txt при этом на сервере не остается, файла как бы и не существует, его заголовок и содержание сгенерил короткий скрипт из 4 строк. Можно было и из трех строк - но уж очень хотелось добавить в название файла дату и время для его уникальности а не просто обозвать файл Untitled.txt. Пользователь может ведь захотеть сохранить и несколько файлов с разными результатами работы спектрального калькулятора в одну папку, но браузер не предлагает пользователю задать произвольное имя txt-файлу при его сохранении. Поэтому лучше позаботиться об уникальности имени файла.
Средствами исключительно JavaScript без 4 строчек кода на PHP у меня не получилось соблюсти все условия поставленной задачи: либо у файла было расширение не txt, либо txt не сохранялся как файл, а открывался в браузере в виде новой страницы.
Изображение
Ответить

Вернуться в «JavaScript»