php: force загрузить в hd?

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=\"". $file ."\";"); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($file)); file_get_contents($file); readfile($file); exit(); 

Любая идея, что я делаю неправильно? Не следует ли загрузить любой файл с моего сервера на жесткий диск пользователя? Как-то каждый файл поврежден! Кроме того, мне интересно, как я могу изменить имя файла загруженного файла?

$file всегда содержит полный путь к моему файлу. если я попробую header('Location:' . $file ); браузер успешно открывает мой файл. однако, если файл является .jpg, браузер не запрашивает окно загрузки. вместо этого он просто открывает файл в окне браузера. Я хочу, чтобы каждый файл загружался в hd.

Пожалуйста, помогите мне, ребята. Я после этого уже более недели, и я не могу найти решение?

Related of "php: force загрузить в hd?"

Почему бы не использовать

header("Content-type: application/octet-stream");

Вместо «force-download»

Также почему вы делаете file_get_contents и readfile ? Требуется только один – вы в основном включаете файл дважды, поэтому он поврежден. Вот как я мог бы выполнить приведенный выше код:

 header("Cache-Control: no-cache"); header("Expires: -1"); header("Content-Type: application/octet-stream;"); header("Content-Disposition: attachment; filename=\"" . basename($file) . "\";"); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($file)); echo file_get_contents($file); 

Этого должно быть достаточно – пока файл действительно существует