Download файлов. Почему не скачивается, а открывает?

Serguitar

Новичок->продвинутый
Download файлов. Почему не скачивается, а открывает?

Ребят, объясните в чём дело? У меня на компе всё работает, а после размещения сайта при download он не скачивает, а открывает файл.
Вот скрипт. ПУть к файлу я храню в базе. Сам файл на диске.
<?
require 'config.php';
$db=mysql_connect($host, $database_user, $database_pass) ;
mysql_select_db($database_name, $db);
$sel=mysql_query("select * from files where id=$file");
$r=mysql_fetch_object($sel);
header("Cache-control: private");
header("Content-Length: ".filesize($r->path));
header("Content-Disposition: attachment; filename=$r->name_file");
header("Content-Type: application/x-force-download; name=$r->name_file");
readfile($r->path);
exit;
?>
Подскажите, в чём ошибка?
 

Alex_Ar

Новичок
А почему readfile, а не print. И если я не ошибаюсь кэширование надо отменить...
 

Vasya

Guest
Возможно, что по дороге нечто изменяет заголовки. Прокся, файрвол...
 

LeaetherStrip

Новичок
У меня такой кусок отлично заработал ;)

///////////////////////////////
// в $str - содержимое файла, в $zipname -
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=$zipname");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".strlen($str));

echo $str;

exit;
///////////////////////////////

А еще, если у тебя тупой IE - попробуй окно закрыть, и открыть снова :)
 

Serguitar

Новичок->продвинутый
Alex_Ar
А почему readfile, а не print. И если я не ошибаюсь кэширование надо отменить...
Ты, возможно, не совсем внимательно читал заголовок. Ведь у меня всё работает на моей машине. Значит, дело действительно в настройках сервера. И принципиального различия между readfile и print в приведённом мной примере нет. А кеширование как раз нужно, имхо.
Vasya
Возможно, что по дороге нечто изменяет заголовки. Прокся, файрвол...
Действительно здравый вариант возможной неисправности. Спасибо.
LeaetherStrip
У меня такой кусок отлично заработал
В ряд ли ты написал его сам, иначе не предлагал бы готовый код, когда у тебя в топике работающий. Но тоже всё равно спасибо.
Nirva
header("Content-Type: application/force-download");
и все.
Машу каслом не испортишь!:)
korvin0
классика - это header("Content-Type: application/octet-stream");
Ну да, мне тоже нравится Бетховен, но у хостера далеко не первая версия пхп и всего остального. Так что причина тоже не в этом.
В любом случае проблема решена, спасибо всем за участие.
 

LeaetherStrip

Новичок
> В ряд ли ты написал его сам, иначе не предлагал бы
> готовый код, когда у тебя
> в топике работающий.
Вот эта глыбокомысленная фраза - она о чем? :)
 
Сверху