2012-03-30 2 views
4

Когда я использую этот код для загрузки этого изображения (используется только для целей тестирования), я открываю загруженное изображение, и все, что он дает мне, является ошибкой. Я попробовал его в хроме. открывая его с помощью окна просмотра фотографий, он говорит, что он не может отобразить изображение, потому что он пуст ??? вот код:php file force загрузить

<?PHP 
// Define the path to file 
$file = 'http://www.media.lonelyplanet.com/lpi/12553/12553-11/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; 
} 
?> 
+0

может прочитать файл читать удаленный файл? – dm03514

+0

Попробуйте удалить заголовки и посмотреть, есть ли у вас ошибка – gosukiwi

+0

, когда я пытаюсь загрузить изображение с моего сайта, я получаю ту же ошибку. и позвольте мне попробовать удалить заголовок. – droidus

ответ

4

Я имел возможность работать его. Ваша проблема в два раза.

Сначала удалите www. с адреса.

Во-вторых, удалите вызов filesize($file), который выдает ошибку, потому что PHP не знает размер файла, прежде чем он загрузит файл. (действительно, просто удалите всю строку)

Удаление этих двух вещей, я был успешным.

+0

Вау, спасибо, это сработало! = D – droidus

+1

Пс. Я понял это, прочитав ошибки PHP. – Umbrella

+0

Да, 'filesize' следует использовать только при предоставлении возможности загрузки локальных файлов (файлов на сервере). –

2

Заменить ob_clean() с ob_end_clean()

Вы все еще буферизацию, поэтому ни один из содержания изображения не получить в браузере.

+0

Нет, не работает :( – droidus

+0

Подождите, я не вижу, как вы начинаете буфер ... Почему это ob_clean там все равно? – Umbrella

+0

вы пробовали правильно установить mimetype на 'image/jpeg'? – Umbrella

1

Заменить:

ob_clean(); 
flush(); 
readfile($file); 

С:

echo get_file_contents($file); 
+0

по-прежнему получают ту же ошибку :( – droidus

+0

URL-адрес http://www.media.lonelyplanet.com/lpi/12553/12553-11/469x264.jpg не выглядит действительным – iambriansreed

+0

Это было действительно, когда я его использовал. image: http://media.lonelyplanet.com/lpi/12553/12553-11/469x264.jpg – droidus

1

Если ваше намерение - это просто загрузить файл с третьей стороны по клику по ссылке, вы можете использовать новую загрузку свойств в теге привязки.

код будет выглядеть примерно так

<a download href="path/to/the/download/file"> Clicking on this link will force download the file</a> 

Он работает на Firefox и хром последней версии. Должен ли я упоминать, что я не проверял его в IE? : P

Смежные вопросы