Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как отправить на скачивание файл


Автор: xarakiry 21.6.2009, 23:36
Есть такая проблем.

Пи нажатии на ссылку к примеру /test.html открывается этот файл, а нужно чтобы выходило предложение его скачать.
Как это сделать ?

Автор: icewind 21.6.2009, 23:55
Размести в директории с html файлами для скачивания .htaccess со строкой 
Код

AddType application/octet-stream .html

Автор: xarakiry 22.6.2009, 08:04
Что то  не помогло... может еще как можно ?

Автор: pizzz 22.6.2009, 09:38
Можно отдавать с помощью пыха

Код

<?php
header('Content-Type: application/octet-stream; name="test.html" '.);
readfile("test.html");
?>

Автор: icewind 22.6.2009, 10:44
Цитата(xarakiry @  22.6.2009,  08:04 Найти цитируемый пост)
Что то  не помогло... может еще как можно ? 

Локально пробовал?

Автор: xarakiry 22.6.2009, 17:17
Цитата(pizzz @ 22.6.2009,  09:38)
Можно отдавать с помощью пыха

Код

<?php
header('Content-Type: application/octet-stream; name="test.html" '.);
readfile("test.html");
?>

это тоже не помогает, у меня ссылочка на файл такая

/folder/test.html

и в заголовке она меняется на _folder_test.html...

Добавлено через 33 секунды
Цитата(icewind @ 22.6.2009,  10:44)
Цитата(xarakiry @  22.6.2009,  08:04 Найти цитируемый пост)
Что то  не помогло... может еще как можно ? 

Локально пробовал?

да, локально на пробовал на денвере...

Автор: icewind 22.6.2009, 21:38
Какое значение директивы AllowOverride в настройках сервера
Файл httpd.conf -> корневая директория сервера ( тег <directory путь> )

Автор: xarakiry 22.6.2009, 22:07
Цитата(icewind @ 22.6.2009,  21:38)
Какое значение директивы AllowOverride в настройках сервера
Файл httpd.conf -> корневая директория сервера ( тег <directory путь> )

AllowOverride All...
Она стандартная. Я ее не менял.

Автор: icewind 22.6.2009, 23:15
Попробуй через пхп таким образом
Код

$filename = "document.html";

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"" . basename($filename) . "\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($filename));
readfile($filename);

Автор: xarakiry 23.6.2009, 16:30
Цитата(icewind @ 22.6.2009,  23:15)
Попробуй через пхп таким образом
Код

$filename = "document.html";

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"" . basename($filename) . "\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($filename));
readfile($filename);

Я же говорю...он отправляет не правильно. У меня файл находится на /tmp/filename.html 
он мне отправит как _tmp_filename.html и он будет пустой

Автор: pizzz 23.6.2009, 16:35
Ну тогда такой ответ. 

Здесь не мастера экстрасенсорного понимания. У меня по крайней мере всего третий дан.

Что по вашему 
Цитата(xarakiry @  23.6.2009,  16:30 Найти цитируемый пост)
он отправляет не правильно

Я не могу почуствовать.

Хотите помощи. Пищите подробнее.

Автор: xarakiry 23.6.2009, 16:49
Я уже выше писал. Он отправляет пустой файл. Т.е он не отправляет файл из /tmp/file.html

Автор: icewind 23.6.2009, 19:50
А как насчет того чтоб правильный путь к файлу file.html указать?  smile 

Автор: MoLeX 24.6.2009, 07:19
xarakiry, приведи свой код

Автор: pizzz 24.6.2009, 12:28
Приведи структуру папок и файлов. и как ты обращаещься к файлу

Автор: alatar 2.10.2009, 00:50
замени
Код

$filename = "document.html";

на
Код

$filename = realpath("/tmp/file.html");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)