2016-05-10 7 views
3

Я уже некоторое время беспокоился об этой проблеме. Я пытаюсь загрузить изображения в PHP, но есть JPG и JPG изображения, а когда я пытаюсь загрузить изображения, JPG тех JPG не найдено (очевидно)Получить изображение JPG и jpg

$img1 = '<img src="imgs/'.$firstImage.'.jpg"></img>'; 
$img2 = '<img src="imgs/'.$secondImage.'.jpg"></img>'; 
$img3 = '<img src="imgs/'.$thirdImage.'.jpg"></img>'; 
$img4 = '<img src="imgs/'.$fourthImae.'.jpg"></img>'; 

Любую идею, как решить эту проблему?

Я попытался с помощью if_exists, но это не сработало хорошо

if (file_exists('http://website_url.nl/imgs/'.$firstImage.'.jpg')) { 
    $img1 = '<img src="imgs/'.$firstImage.'.jpg"></img>'; 
} else { 
    $img1 = '<img src="imgs/'.$firstImage.'.JPG"></img>'; 
} 

проблема сейчас в том, что он не может найти изображения с регулярным JPG. Например, я пытаюсь загрузить 23.jpg, но сценарий пытается загрузить 23.JPG, потому что файл 23.jpg не существует, хотя он существует и помещается в папку, а 23.JPG - нет. Он работает с файлами JPG. Например, DOC_202.JPG найдено потому, что DOC_202.jpg не существует, поэтому он загружает JPG. Но с jpg они не сработают. Любые решения?

С наилучшими пожеланиями,

+1

Любой шанс изменения файла при загрузке их? Так что возможный сценарий PHP, ответственный за загрузку, преобразует все в нижний регистр. Или файлы обрабатываются вручную кем-то другим? –

+0

Под файлами вы имеете в виду изображения? Ну, они отправили мне по электронной почте изображения. И я просто помещаю их в папку и загружаю их на сервер. –

+1

@ Theekopje Вы можете просто переименовать их самостоятельно, не так ли? –

ответ

2

Просто проверьте файл в локальном каталоге, не используйте URL-адрес

if(file_exists('imgs/'.$firstImage.'.jpg')) { 

Большинство URL обертка не поддерживает стата(), см http://www.php.net/manual/en/function.file-exists.php (синий примечание о php5 в конце) и http://www.php.net/manual/en/wrappers.php

Edit:
PS: примечание стороны, при использовании окна разделитель каталогов представляет собой обратный слэш «\», на Linux это вперед SLAs h '/'. См. Глобальную константу DIRECTORY_SEPARATOR, если вам нужно глобальное решение.

+0

Это сработало для меня, но я не могу понять, почему, потому что [этот пост] (http://stackoverflow.com/questions/7991425/php-how-to-check-if-image-file-exists) предложил использовать полную ссылку ? Но спасибо! –

+0

Это странно. Вы должны использовать физический локальный адрес файла. –

+2

@ PerEnström Это относительное физическое имя локального файла, а не относительный URL-адрес. См. Мое редактирование, linux (сервер) использует косые черты в качестве разделителя каталогов – clemens321

0

Функция file_exists проверяет локальную систему, если файл существует или нет, а не внешний URL.

http://php.net/manual/en/function.file-exists.php

Так что если вы измените параметр file_exists на локальный адрес, он должен работать. Например:

if(file_exists('/webdirectory/public_html/project/images/' . $image1 . '.jpg')){ 
    //do stuff 
} 

Чувствительность к действию файла file_exists зависит от файловой системы, в которой она находится. В случае с файлами unix-серверов дело касается файлов, а также file_exists.

Этот комментарий в PHP руководство предлагает способ проверки с помощью URL: http://php.net/manual/en/function.file-exists.php#75064