|
|
|
| Всем привет:
Есть код:
<?
$content = fopen("text.txt", "w");
fwrite($content, $text);
fclose($content);
echo "<a href='text.txt'>Скачать</a> ";
?>
|
результатом работы этого скрипта будет вывод содержимого text.txt в браузер.
мне нужно чтобы файл предлагалось скачать? не открывая его в браузере, как это сделать?
знаю, что можно с помощью загаловков, но не знаю, куда их прописывать:
header("Content-Disposition: attachment; filename=text.txt");
header("Content-type: application/octet-stream"); | |
|
|
|
|
|
|
|
для: *m*
(18.06.2009 в 22:24)
| | Прямо сверху и прописать. | |
|
|
|
|
|
|
|
для: Николай2357
(18.06.2009 в 22:59)
| | выдает ошибку:
Warning: Cannot modify header information - headers already sent by (output started at Z:\ и.т.д | |
|
|
|
|
|
|
|
для: *m*
(18.06.2009 в 22:24)
| |
header("Content-Disposition: attachment; filename=text.txt");
header("Content-type: application/octet-stream");
echo file_get_content('text.txt');
|
| |
|
|
|
|
|
|
|
для: Adamant
(18.06.2009 в 23:12)
| | а файл гет контент тут причем? | |
|
|
|
|
|
|
|
для: *m*
(18.06.2009 в 23:18)
| | Вначале посылаются заголовки (до этого ничего не должно выводиться в браузер, даже пробел перед <?php). Затем отдается содержимое файла. file_get_contents(). Но содержимое файла не выводится на печать, а отдается на загрузку. | |
|
|
|
|
|
|
|
для: Adamant
(18.06.2009 в 23:27)
| | тоесть сами заголовки должны распологаться прямо в самом начале страницы? | |
|
|
|
|
|
|
|
для: *m*
(18.06.2009 в 22:24)
| | >
><?
>$content = fopen("text.txt", "w");
>fwrite($content, $text);
>fclose($content);
>echo "<a href='text.txt'>Скачать</a> ";
>
|
>
>результатом работы этого скрипта будет вывод содержимого text.txt в браузер.
Результатом ... работы этого ... скрипта будет вывод в браузер не содержимого text.txt ,
а лишь коротенькой такой строки
<a href='text.txt'>Скачать</a>
|
Это всё, что сделает этот скрипт! | |
|
|
|
|
|
|
|
для: Trianon
(18.06.2009 в 23:24)
| | спасибо за вашу нереальную подсказку, а то бы я не догадался. | |
|
|
|
|
|
|
|
для: *m*
(18.06.2009 в 23:29)
| |
<?php
if (isset($_GET['download'])) {
if ($_GET['download'] == 'text_file') {
header("Content-Disposition: attachment; filename=text.txt");
header("Content-type: application/octet-stream");
echo file_get_contents('text.txt');
}
}
echo "<a href='?download=text_file'> Скачать файл </a><br />\n";
?>
|
| |
|
|
|
|
|
|
|
для: Adamant
(18.06.2009 в 23:43)
| | первый раз было лучше. | |
|
|
|
|
|
|
|
для: Adamant
(18.06.2009 в 23:43)
| | ошибки исчезли, но скачивание файла не начинается..
код взял ваш, вместо text_file написал text.txt соответственно, так как в моем случае файл text.txt.. почему не начинается загрузка? | |
|
|
|
|
|
|
|
для: *m*
(19.06.2009 в 12:32)
| | кто-нибудь знает решение??? | |
|
|
|
|
|
|
|
для: *m*
(19.06.2009 в 15:20)
| | Так чего пишет:
<?php
error_reporting(E_ALL);
$file = 'text.txt';
if (isset($_GET['download'])) {
if ($_GET['download'] == $file) {
if (!is_file($file)) {
echo "Файл <b>$file</b> не найден<br />";
exit;
}
header("Content-Disposition: attachment; filename=text.txt");
header("Content-type: application/octet-stream");
echo file_get_contents($file);
} else {
echo "\$_GET['download'] не <b>$file</b><br />";
}
} else {
echo "\$_GET['download'] не существует<br />";
}
echo "<a href='?download=$file'> Скачать файл </a><br />\n";
?>
|
| |
|
|
|
|
|
|
|
для: Adamant
(19.06.2009 в 15:44)
| | сначала выдает $_GET['download'] не существует, после нажатия на кнопку скачать
выводит $_GET['download'] не text.txt при нажати на ссылку опять пишет что $_GET['download'] не существует. Загрузка не начинается.. но файл точно существует..
если дать ссылку вида <a href="text.txt"></a> выводит содержимое файла в браузер. | |
|
|
|
|
|
|
|
для: *m*
(20.06.2009 в 14:02)
| | По такой ссылке всё хорошо качается:
index.php?download=text.txt
|
> если дать ссылку вида <a href="text.txt"></a> выводит содержимое файла в браузер.
А это Вы просто открываете файл в браузере, скрипт здесь уже не причём. | |
|
|
|
|
|
|
|
для: Diplex
(20.06.2009 в 14:25)
| | >По такой ссылке всё хорошо качается:
>
index.php?download=text.txt
|
Если мы говрим о скриптах, уже представленных в этом топике, по такой ссылке ничего хорошего не выкачается.
Файл окажется разрушен. | |
|
|
|
|
|
|
|
для: Trianon
(20.06.2009 в 14:53)
| | >> Если мы говрим о скриптах, уже представленных в этом топике, по такой ссылке ничего хорошего не выкачается.
Файл окажется разрушен.
Да, поторопился. Просто увидел, что что-то отдается на сохранение, а что именно - не посмотрел :)
Вот пример, который сразу выводит файл на сохранение:
<?php
if($_GET['down'])
{
if (is_file($_GET['down'])) {
header("Content-Disposition: attachment; filename=\"$_GET[down]\"");
header("Content-type: application/octet-stream");
echo file_get_contents($_GET['down']);
} else { echo 'Файл не найден!'; }
} else { echo 'Не передано название файла!'; }
?>
|
Вызывается так:
| |
|
|
|
|
автор: цы (20.06.2009 в 15:10) |
|
|
для: Diplex
(20.06.2009 в 14:58)
| | [от модератора для psychomc]
не ожидал | |
|
|
|
|
|
|
|
для: цы
(20.06.2009 в 15:10)
| | [Модератор: принято] | |
|
|
|
|
|
|
|
для: Diplex
(20.06.2009 в 14:58)
| | сначала выводит, что не переданно название файла, после нажатия на кнопку скачать
пишет что файл не найде, (но файл существует, все перепроверил)
пр инажатии на ссылкуи <a href='script.php?down=$file'>Скачать</a>
где script.php страница на которой выполняется скрипт.
файл text.txt лежит в отной папке со скриптом.
почему же не работает?? и почему пишет что файл не найден? | |
|
|
|
|
|
|
|
для: *m*
(20.06.2009 в 15:33)
| | $file - это text.txt
ссылка должна быть с таким адресом:
<a href='script.php?down=text.txt>Скачать</a>
|
| |
|
|
|
|
|
|
|
для: Diplex
(20.06.2009 в 15:38)
| | ну это понятно, у меня в начале кода переменной файл и придается значение text.txt только что это меняет результат работы один при text.txt и если прописано $file -- блин почему же не работает?( | |
|
|
|
|
|
|
|
для: *m*
(20.06.2009 в 16:05)
| | А в нужных местах $_GET[down] на $file меняете?
Опробуйте скрипт - не меняя в нём ничего! Итог должен быть такой: Вы запускаете скрипт, и если всё правильно, то Вам выдаётся файл. Если что-то неправильно, то будет указано - в чём ошибка. | |
|
|
|
|
|
|
|
для: Diplex
(20.06.2009 в 16:20)
| | ок, вы можете написать код, с нужными заменами и я его опробую, пока, к сожалению не работает = ((
для меня сейчас важно вобще понять почему не работает, защита, это уже другой вопрос.
спасибо. | |
|
|
|
|
|
|
|
для: *m*
(20.06.2009 в 22:53)
| | Код я Вам уже написал.
1) Сохраните его с названием script.php
2) Залейте в папку с этим скриптом text.txt
3) Запустите скрипт через адресную строку браузера: http://...../script.php?down=text.txt
Результат:
Вам должен выдаться на скачивание файл text.txt | |
|
|
|
|
|
|
|
для: Diplex
(20.06.2009 в 23:56)
| | ок, а почему именно script.php долен называться??
и где мне $_GET['down'] нужно поменять на $file? | |
|
|
|
|
|
|
|
для: *m*
(21.06.2009 в 00:59)
| | Ничего нигде менять не нужно. Сделайте всё, как я написал, и посмотрите на результат. | |
|
|
|
|
|
|
|
для: Diplex
(21.06.2009 в 15:07)
| | итак, делаю так:
создал файл text.txt
создал файл script.php его содержание:
<form method="get">
<input type="submit" name="down" value="down">
</form>
<?php
if($_GET['down'])
{
if (is_file($_GET['down'])) {
header("Content-Disposition: attachment; filename=\"$_GET[down]\"");
header("Content-type: application/octet-stream");
echo file_get_contents($_GET['down']);
} else { echo 'Файл не найден!'; }
} else { echo 'Не передано название файла!'; }
echo "<a href='script.php?down=text.txt'> Скачать </a>";
?>
|
пишу в браузере http://.../script.php
загружается страница с кнопкой down
ниже:
Не переданно название файла 'Скачать файл'
после нажатия на кнопку down
пишет файл не найден (хотя файл есть он существует!)
нажимаем скачать файл
выводит:
Cannot modify header information - headers alreadz sent bz )output started at (далее полный путь к файлу script.php on line 9)
Cannot modify header information - headers alreadz sent bz )output started at (далее полный путь к файлу script.php on line 10)
как раз там где находяться строчки заголовков..
и выводит содержание файла text.txt в браузер.
мазафака это самое геморойное с чем мне приходилось сталкиваться, я и самое обидное что я не могу понять почему не работает, что не так??? | |
|
|
|
|
|
|
|
для: *m*
(21.06.2009 в 19:43)
| | Жесть! Честное слово. Обязательно к прочтению (изучению) http://phpfaq.ru/header
Вот запустите ничего не меняя в коде:
<?php
$file = 'text.txt';
if (isset($_GET['down'])) {
if ($_GET['down'] == $file) {
if (!is_file($file)) {
echo "Файл <b>$file</b> не найден<br />\n";
} else {
header("Content-Disposition: attachment; filename=$file");
header("Content-type: application/octet-stream");
readfile($file);
exit;
}
} else {
echo "Файл $file не разрешен админом для скачивания<br>\n";
}
} else {
echo "<a href='?down=$file'> Скачать файл </a><br />\n";
}
?>
|
| |
|
|
|
|
|
|
|
для: Adamant
(21.06.2009 в 20:38)
| | Жесть в том, что человек не хочет слушать! Его просят, чтобы ничего не менял, а он каждый раз что-то своё добавляет... Лично мои нервы сдают :))) | |
|
|
|
|
|
|
|
для: Diplex
(21.06.2009 в 23:10)
| | Если уважаемый M не может(не хочет) справиться с такой пустяковой задачей, то что говорить о более сложных.
Элементарное нежелание думать(соображать) самостоятельно. Есть такой инструмент Google, который может ответить почти на все вопросы.
ЗЫ. Diplex согласен с вами. Тоже считаю, что уже более чем достаточно помогли топикастеру, для того чтобы у него по сабжу наступило просветление. | |
|
|
|
|
|
|
|
для: Adamant
(21.06.2009 в 20:38)
| | А подскажите как эту кнопку "Скачать файл" вывести в HTML файл отдельно (для размещения в статье, к примеру)?
И как можно вместо кнопки "Скачать файл" добавить картинку?
Заранее СПАСИБО!!! | |
|
|
|
|
автор: sergei1094 (11.12.2013 в 00:11) |
|
|
для: *m*
(21.06.2009 в 19:43)
| | Запуская скрипты в которых присутствует заголовок, убедитесь, что САМАЯ первая строка где открывается тег <?php не имеет пробелов до него. И самой первой строкой должен быть именно данный тег. Тег типа данного типа правильный:
1. <?php ...
2.
3.
Тег данного типа не правильный
1.
2. <?php ...
3.
Если же у вас сделано всё правильно, то проверьте кодировку вашего php скрипта. Он должен быть в кодировке UTF-8 без BOM сигнатуры. Зачастую ошибка в заголовках возникает из-за BOM сигнатуры. Принцип таков: Данная сигнатура, устанавливает специальный НЕВИДИМЫЙ символ в самое начало вашего файла. Вам может казаться что начало строки пустое, но может быть и не так, и придерживайтесь данного правила. | |
|
|
|
|
|
|
|
для: sergei1094
(11.12.2013 в 00:11)
| | [Модератор: Еще один неадекватный пост, и закрываем тему!] | |
|
|
|
|
|
|
|
для: *m*
(21.06.2009 в 19:43)
| | не правильно делаете, до вызова header не должно быть никакого вывода в браузер | |
|
|
|