Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Кнопка сохранить в файл (https://javascript.ru/forum/events/9557-knopka-sokhranit-v-fajjl.html)

mff 24.05.2010 14:35

Кнопка сохранить в файл
 
Здравствуйте!
Подскажите, возможно ли на JS сделать такое:
Есть <textaria> в ней текст:
Код:

#EXTINF:1,Rai tre
http://86.55.3.10:8036
#EXTINF:1,Rai med
http://86.55.3.10:8037

и есть кнопка, жму на неё и выскакивает окошко сохранить текстовый файл с расширением .m3u, в нем текст из <textaria> :)

Kolyaj 24.05.2010 14:46

Передаёте текст на сервер, сервер его же возвращает с заголовком
Content-Disposition: attachment; filename=file.m3u

mff 24.05.2010 15:05

Kolyaj спасибо! Всё уже так и сделал, а вот как теперь текст из текстарии передать в тело файла file.m3u ?

Kolyaj 24.05.2010 15:20

Цитата:

Сообщение от mff
а вот как теперь текст из текстарии передать в тело файла file.m3u ?

Как я сказал, так и передать.

mff 24.05.2010 15:25

Я пишу в файле, в которые передаю данные:
<?php
$filename = 'playlist.m3u';
echo $_POST["output"];
header("Content-Disposition: attachment; filename=$filename");
?>
Но он пустой сохраняется :(

Kolyaj 24.05.2010 15:38

Вывод ошибок включите.

SkyLight 24.05.2010 16:08

А вообще рекомендуется хедеры отправлять ДО вывода контента. Судя по всему у вас именно тот случай.

mff 24.05.2010 16:43

Менял местами не помогло :(

SkyLight 24.05.2010 17:35

Смотрите ошибки и проверьте правильность вывода

mff 24.05.2010 20:28

SkyLight,
пишет
Цитата:

Notice: Undefined index: output in /home/c/...
Вот код:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
echo $HTTP_POST_VARS["output"];
//header("Content-Disposition: attachment; filename=$filename");
?>
:(

B~Vladi 24.05.2010 23:41

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

Gvozd 25.05.2010 00:53

Цитата:

Сообщение от mff
$_POST["output"]

Цитата:

Сообщение от mff
$HTTP_POST_VARS["output"]

почитайте внимательно справку PHP
Первый вариант-правильный, второй-нет
ну, а остлальное уже сказали

mff 25.05.2010 01:04

Спасибо, вопрос решил! Убрал из формы enctype="text/plain" :)
Цитата:

Сообщение от B~Vladi (Сообщение 56403)
Во вторых создай на серве текстовый файл, засунь в него данные и уже его отправляй в ответе с правильным mime-type, тогда браузер предложит его сохранить.

Вариант с Content-Disposition: attachment; меня полностью устраивает, проверил в IE, FF, Google Chrome и в Opera. Не работает только в Opera

Kolyaj 25.05.2010 09:21

Цитата:

Сообщение от mff
Не работает только в Opera

Поищи по форуму, кто-то где-то писал решение.

mff 26.05.2010 14:21

Kolyaj,
Спасибо вам большое! Нашел на форуме, вот решение:
header("Content-type: application/x-download");
и вот что получилось в итоге:
<?php
if($_POST["format"]=="1"){$filename = "playlist.m3u";}
if($_POST["format"]=="2"){$filename = "playlist.xspf";}
if($_POST["format"]=="3"){$filename = "playlist.wpl";}
if($_POST["format"]=="4"){$filename = "playlist.pls";}
header("Content-type: application/x-download");
header("Content-Disposition: attachment; filename=$filename");
echo str_replace('\\', false, $_POST["output"]);
?>


Часовой пояс GMT +3, время: 00:32.