Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2010, 15:28   #1
puKo
Пользователь
 
Аватар для puKo
 
Регистрация: 20.09.2009
Сообщений: 19
Восклицание Проверка существования файла на сервере

Необходимо проверить, доступна-ли фотография по заданному пользователю адресу.

$_POST['photoUrl'] — Адрес фотографии.

Я это делаю следующим образом:

PHP код:
    ##
    ##Проверяем рабочая ли фотография
    ##
             
$photo $_POST['photoUrl'];
             
$ext strtolower(array_pop(explode('.',$photo)));
             
file_put_contents('temp/temp'.$extfile_get_contents($_POST['photoUrl']));
             
$size=GetImageSize("temp/temp".$ext);
             
$iw=$size[0];
             
$ih=$size[1];
             if(
$iw && $ih 2) {
                       echo 
"Ошибка, файл отсутствует.";
                       exit;
             }
         
##
         ##
         ## 
Но проблема в том, что мой обработчик не всегда работает.

Приведу пример где он не работает как надо:
URL (Нерабочий): http://cs1495.vkontakte.ru/u00001/a_03b4cf47z.jpg
Воспринимает как надо, сразу выводит ошибку.

URL (Нерабочий): http://zcs1495.vkontakte.ru/u00001/a_03b4cf47.jpg
Обработчик уходит в таймаут при этом запросе.

Кто не понял, скажу, разница в букве: z, в первом примере она в конце, а во втором присутствует в под домене.

Вот, собственно, именно из за этого ищу другой способ проверки файла на существование в сети.
Не беспокойся о том, что у тебя нет высокого чина. Беспокойся о том, достоин ли ты того, чтобы иметь высокий чин.

Последний раз редактировалось puKo; 08.08.2010 в 15:31.
puKo вне форума Ответить с цитированием
Старый 08.08.2010, 16:47   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Можно попробовать использовать функцию get_headers()
Примерно так:
PHP код:
$file 'http://www.domain.com/somefile.jpg';
$file_headers = @get_headers($file);
if(
$file_headers[0] == 'HTTP/1.1 404 Not Found') {
    
$exists false;
}
else {
    
$exists true;

Andkorol вне форума Ответить с цитированием
Старый 08.08.2010, 17:23   #3
iceman12
Новичок
Джуниор
 
Регистрация: 08.08.2010
Сообщений: 1
Радость

#2, Зачем так не оптимизировано?
PHP код:
<?php 
     
if(@get_headers('http://vk.com/'))
        echo 
'Существует';
?>

Последний раз редактировалось iceman12; 08.08.2010 в 17:54.
iceman12 вне форума Ответить с цитированием
Старый 08.08.2010, 18:07   #4
puKo
Пользователь
 
Аватар для puKo
 
Регистрация: 20.09.2009
Сообщений: 19
Восклицание

Не подходят никакие предложенные варианты.

Меня не интересует ответ сервера, мне нужно убедится заодно в том, что там находится JPG изображение.
Не беспокойся о том, что у тебя нет высокого чина. Беспокойся о том, достоин ли ты того, чтобы иметь высокий чин.

Последний раз редактировалось puKo; 08.08.2010 в 18:09.
puKo вне форума Ответить с цитированием
Старый 08.08.2010, 22:05   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от iceman12 Посмотреть сообщение
#2, Зачем так не оптимизировано?
PHP код:
<?php 
     
if(@get_headers('http://vk.com/'))
        echo 
'Существует';
?>
Вы вообще понимаете ,что даже если искомого файла нет по указанному URL - то сервер всё равно вернёт ответ в функцию get_headers() - тоесть функция всё равно вернёт true-результат ..???
False функция вернёт только в случае ошибки соединения с сервером.
Советую тестировать свой код,прежде чем рекомендовать его как решение проблемы
Потому что ваш пример "оптимизации" - ГЛУПОСТЬ.

Цитата:
Не подходят никакие предложенные варианты.
Меня не интересует ответ сервера, мне нужно убедится заодно в том, что там находится JPG изображение.
Если вы в URL укажете http://cs1495.vkontakte.ru/u00001/a_03b4cf47z.jpg - то уж поверьте,сервер будет искать именно этот файл.
А значит в случае его нахождения - это и будет вам подтверждение что там именно JPG (если в запросе будет JPG)...

Последний раз редактировалось Andkorol; 08.08.2010 в 22:16.
Andkorol вне форума Ответить с цитированием
Старый 09.08.2010, 00:30   #6
puKo
Пользователь
 
Аватар для puKo
 
Регистрация: 20.09.2009
Сообщений: 19
По умолчанию

Так мне кто-то подскажет как по ссылке на изображение узнать существует-ли там изображение?
Не беспокойся о том, что у тебя нет высокого чина. Беспокойся о том, достоин ли ты того, чтобы иметь высокий чин.
puKo вне форума Ответить с цитированием
Старый 09.08.2010, 10:15   #7
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,714
По умолчанию

Вам уже подсказали что надо делать!
В примере который вам дал Andkorol
$exists = true;
вам надо заменить на ваш код, который вы показали в первом посте.
Стрелок-охотник

Последний раз редактировалось mv28jam; 09.08.2010 в 10:17.
mv28jam вне форума Ответить с цитированием
Старый 09.08.2010, 11:14   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Как вариант (может быть,даже более правильный) - можно проверять только положительный ответ сервера:
PHP код:
$file 'http://www.domain.com/somefile.jpg'
$file_headers = @get_headers($file); 
if(
$file_headers[0] == 'HTTP/1.1 200 OK') { 
    
$exists true;

else { 
    
$exists false

Так,мне кажется,можно более уверенно судить о результате проверки.
Andkorol вне форума Ответить с цитированием
Старый 09.08.2010, 13:38   #9
puKo
Пользователь
 
Аватар для puKo
 
Регистрация: 20.09.2009
Сообщений: 19
По умолчанию

Вы не понимаете!

Меня интересует, существует-ли там изображение image/jpeg по адресу, а не что-либо.

Насколько будет правильно делать поиск в массиве $file_headers на наличие элемента со значением: Content-Type: image/jpeg ?
Не беспокойся о том, что у тебя нет высокого чина. Беспокойся о том, достоин ли ты того, чтобы иметь высокий чин.
puKo вне форума Ответить с цитированием
Старый 09.08.2010, 14:43   #10
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,714
По умолчанию

Цитата:
Сообщение от puKo Посмотреть сообщение
Насколько будет правильно делать поиск в массиве $file_headers на наличие элемента со значением: Content-Type: image/jpeg ?
Будет правильно.
+ надо учесть что может быть image/pjpeg
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка даты на сервере!!! $T@LKER Работа с сетью в Delphi 0 11.05.2010 17:03
PHP проверка существования видео на видеохостинге Linel PHP 1 25.04.2010 22:23
Проверка существования TEdit John_chek Общие вопросы Delphi 9 18.04.2008 14:56
Проверка существования директории Gorin Общие вопросы Delphi 7 25.11.2007 19:47
проверка существования окна Shade Win Api 3 22.07.2007 17:56