Когда я использую этот код для загрузки этого изображения (используется только для тестирования), я открываю загруженное изображение, и все, что он дает мне, является ошибкой. Я попробовал его в хроме. открывая его с помощью окна просмотра фотографий, он говорит, что он не может отобразить изображение, потому что он пуст ??? вот код:
<?PHP // Define the path to file $file = 'http://img.ruphp.com/download/469x264.jpg'; if(!file) { // File doesn't exist, output error die('file not found'); } else { 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, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } ?>
У меня был шанс разобраться. Ваша проблема в два раза.
Сначала удалите www.
от url.
Во-вторых, удалите вызов filesize($file)
который выдает ошибку, потому что PHP не знает размер файла, прежде чем он загрузит файл. (действительно, просто удалите всю строку)
Убрав эти две вещи, я добился успеха.
Замените ob_clean()
на ob_end_clean()
Вы по-прежнему буферизуетесь, поэтому ни одно содержимое изображения не попадает в браузер.
Заменить:
ob_clean(); flush(); readfile($file);
С:
echo get_file_contents($file);
Если ваше намерение – это просто загрузить файл от третьего лица по щелчку ссылки, вы можете использовать новую загрузку свойств в теге привязки.
Код будет выглядеть примерно так:
<a download href="path/to/the/download/file"> Clicking on this link will force download the file</a>
Он работает на последней версии Firefox и Chrome. Должен ли я упоминать, что я не проверял его в IE? :П