[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Предложить сохранить изображение
nikki4
при нажатии на кнопку на экран выводится картинка
<?php echo '<img src="image.php?text='.$text.'&font='.$_POST['font'].'" alt="" title="" />' ; ?>

как сделать, чтобы например при нажатии на другую кнопку, или картинку появлялось окошко с выбором пути куда сохранить файл?
это на случай, если человек не знает, что сохранить можно кликнув правой кнопкой и сохранить как..



Спустя 19 минут, 24 секунды (6.04.2012 - 10:49) Игорь_Vasinsky написал(а):
//get_logs.php
$filename = "file_name.txt";
$content = "text \r\n";
$content.= "text2 \r\n";
header('HTTP/1.1 200 OK');
header('Content-Type: application/force-download');
header('Content-Description: File Transfer');
header("Content-Disposition: attachment; filename=\"{$filename}\"");
header('Content-Transfer-Encoding: binary');
echo $content;

Спустя 37 минут, 56 секунд (6.04.2012 - 11:27) killer8080 написал(а):
копипаст из мануала
Пример #1 Форсирование скачки с помощью readfile()
<?php
$file = 'monkey.gif';

if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>

Спустя 37 минут, 24 секунды (6.04.2012 - 12:05) nikki4 написал(а):
спасибо.. а как этим пользоваться не понимаю.. ну например вот что у меня получилось:

<?php
$filename = 'image.php';
header('HTTP/1.1 200 OK');
header('Content-Type: application/force-download');
header('Content-Description: File Transfer');
header("Content-Disposition: attachment; filename=\"{$filename}\"");
header('Content-Transfer-Encoding: binary');
?>

но вместо того, чтобы сохранить картинку, сохраняется пустой файл..

Спустя 20 минут, 27 секунд (6.04.2012 - 12:25) Игорь_Vasinsky написал(а):
ты кнопкой отправляешь юзера на этот скрипт, в GET или POST передаёшь имя и путь к файлу. Этим скриптом читаешь эти данные и вставляешь в этот скрипт. Скрипт выдаст диалоговое окно на сохранение файла

Спустя 7 минут, 46 секунд (6.04.2012 - 12:33) nikki4 написал(а):
это понятно.. но как уже писал выше не работает... почему-то пустой файл

вот код test.php

<?php
$filename = 'image.php';
header('HTTP/1.1 200 OK');
header('Content-Type: application/force-download');
header('Content-Description: File Transfer');
header("Content-Disposition: attachment; filename=\"{$filename}\"");
?>


а при запуске image.php создается файл с изображением text и шрифтом ariblk.ttf'
create_image('text','ariblk.ttf');


что изменить в test.php чтобы сохранялся не пустой файл ,а с изображение image.png?


а этот код, он сохраняет файл image.php с его кодом.. вместо изображения
<?php
$file = 'image.php';

if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>

Спустя 47 минут, 2 секунды (6.04.2012 - 13:20) killer8080 написал(а):
Цитата (nikki4 @ 6.04.2012 - 12:33)
это понятно.. но как уже писал выше не работает... почему-то пустой файл

вот код test.php

<?php
$filename = 'image.php';
header('HTTP/1.1 200 OK');
header('Content-Type: application/force-download');
header('Content-Description: File Transfer');
header("Content-Disposition: attachment; filename=\"{$filename}\"");
?>

А как он будет работать? Ты же картинку не выводишь в поток wink.gif

Спустя 1 час, 28 минут, 57 секунд (6.04.2012 - 14:49) nikki4 написал(а):
тогда вопрос, а как выводить картинку в поток?

Спустя 17 минут, 11 секунд (6.04.2012 - 15:06) killer8080 написал(а):
Цитата (nikki4 @ 6.04.2012 - 14:49)
тогда вопрос, а как выводить картинку в поток?

а ты внимательней посмотри на код, который я давал wink.gif

Спустя 3 минуты, 16 секунд (6.04.2012 - 15:09) nikki4 написал(а):
а тот код не работает..пишут 8 раз
Warning: Cannot modify header information - headers already sent by


Спустя 21 час, 40 минут, 31 секунда (7.04.2012 - 12:50) killer8080 написал(а):
Цитата (nikki4 @ 6.04.2012 - 15:09)
а тот код не работает..пишут 8 раз
Warning: Cannot modify header information - headers already sent by

Потому что перед header() не должно быть никакого вывода, в том числе никаких пробельных символов перед открывающим дескриптором <?php. Если файл сохранен в utf-8, то кодировка должна быть без BOM.

Спустя 6 дней, 3 часа, 44 минуты, 43 секунды (13.04.2012 - 16:34) killer8080 написал(а):
nikki4
во первых что это за заголовок?
Цитата (nikki4 @ 13.04.2012 - 16:23)
header('Content-type: application/png');

во вторых
Цитата (nikki4 @ 13.04.2012 - 16:23)
но возникла следующая проблема, при использовании этой функции в основном коде пишут
Cannot modify header information - headers already sent by ...
как же тогда её использовать?

читай внимательно ответы
Цитата (killer8080 @ 7.04.2012 - 12:50)
Потому что перед header() не должно быть никакого вывода, в том числе никаких пробельных символов перед открывающим дескриптором <?php. Если файл сохранен в utf-8, то кодировка должна быть без BOM.


Спустя 1 минута, 21 секунда (13.04.2012 - 16:36) nikki4 написал(а):
короче оказалось все просто :)
догадался, что достаточно убрать хедер и оставить
readfile('pic/file.png');

а все что было выше это лишнее.. из-за чего ничего не работало


пс: всетаки это не сработало.. может в кеше сохранилось, или я кнопку сохранить после изменения кода забыл сделать или еще что.. но вскоре работать перестало :)

вообщем уже разобрался, спасибо :)
оставил код как в мануале

Спустя 3 минуты, 39 секунд (13.04.2012 - 16:39) killer8080 написал(а):
Цитата (nikki4 @ 13.04.2012 - 16:36)
короче оказалось все просто smile.gif
догадался, что достаточно убрать хедер и оставить
readfile('pic/file.png');

а все что было выше это лишнее.. из-за чего ничего не работало

Это не решение проблемы, заголовки нужно указывать обязательно, иначе браузер станет читать файл как html.

PS а посты зачем удалять? blink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.