2015-09-09 2 views
1

У меня есть сценарий, который проверяет удаленный сервер для файла, и если он уже доступен локально, он должен использовать его. Если он недоступен локально, загрузите изображение на сервер. Тем не менее, я борюсь со сценарием, переписывающим изображения, которые у меня уже есть локально. Если он уже доступен локально, сценарий ничего не должен делать с файлом - просто отобразите его.PHP file_exists и сохранить локально

В некоторых случаях сценарий пытается загрузить изображение, которое у меня уже есть, и размер файла для файла, который он перезаписывает, становится 0kb, хотя файл работал отлично раньше.

Что я здесь делаю неправильно?

<?php 
$url = "http://www.myserver.com/image123.jpg"; 
$filename = basename($url); 
if(!file_exists(images/$filename)) 
{ 
// File doesn't exsist, download it! 
    $image = file_get_contents("$url"); 
    file_put_contents("images/$filename", $image); 
    $image = "images/$filename"; 
} else { 
// We already got this file, display it! 
    $image = "images/$filename"; 
} 
echo $image; 
?> 
+0

Я думаю, что это должно быть, как это file_exists ('изображения /'.$ имя_файла)) –

+0

Я дам, что попробовать :) – zorensen

ответ

1
<?php 

    $url = "http://www.myserver.com/image123.jpg"; 

    $filename = basename($url); 

    $path = "images/$filename"; 

    if(!file_exists($path)) { 

     $image = file_get_contents($url); 
     file_put_contents($path, $image); 

    } 

    echo $path; 

?> 
+1

Работает отлично! Позаботьтесь, чтобы объяснить, что я сделал не так с моим сценарием? :) – zorensen

+1

У вас просто отсутствовали котировки: 'if (! File_exists (images/$ filename))' Всякий раз, когда у вас есть одно и то же выражение в нескольких местах, лучше всего хранить в переменной и использовать переменную, разрешает ошибки. – flcoder

+0

Спасибо за объяснение! – zorensen

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