Перейти к содержимому

Фото
- - - - -

PHP - проверка файла


  • Вы не можете создать новую тему
  • Please log in to reply
8 ответов в этой теме

#1 simonsays

simonsays
  • Пользователь
  • 835 сообщений

Отправлено 29 Ноябрь 2010 - 16:51

Кто знает, как проверить, существует ли файл (а именно, картинка) на внешнем сервере?
Погуглил, нашёл 4 способа:
- fopen (вроде как самый медленный);
- GetImageSize();

И функции, использующие
- curl
или
- fsocketopen

У кого есть опыт, какой из способов самый эффективный?

Сообщение изменено: simonsays (29 Ноябрь 2010 - 17:08 )

  • 0

#2 Ferzin

Ferzin
  • Постоялец
  • 1 967 сообщений

Отправлено 29 Ноябрь 2010 - 18:19

gd libraries, is_file, file_exists

много способов короче.
  • 0

#3 Tum

Tum
  • Пользователь
  • 540 сообщений

Отправлено 07 Декабрь 2010 - 13:37

CURL.
Делаешь запрос и смотришь ответ сервера. Если 404 - файла нет. Если 200 - есть.
  • 0

#4 motorov

motorov
  • Пользователь
  • 109 сообщений
  • Откуда:с Луны

Отправлено 01 Январь 2011 - 23:02

© php.net example
<?php
$filename = '/path/to/foo.txt';

if (file_exists($filename)) {
    echo "The file $filename exists";
} else {
    echo "The file $filename does not exist";
}
?>

Сообщение изменено: motorov (01 Январь 2011 - 23:08 )

  • 0
hérisson dans le brouillard

#5 Akhenaton

Akhenaton
  • Постоялец
  • 8 038 сообщений

Отправлено 01 Январь 2011 - 23:19

motorov,
не подходит. Файл - удалённый.
  • 0

#6 motorov

motorov
  • Пользователь
  • 109 сообщений
  • Откуда:с Луны

Отправлено 01 Январь 2011 - 23:45

самый простой вариант

$content = file_get_contents('http://www.google.com/'); 
if ($content !== false) {
   // если есть файл
} else {
   // в противном случаи нет
 
}

@file_get_contents - тогда не будет показывать Варнинг сообщение если не сможет получить информацию от удалённого файла.
  • 0
hérisson dans le brouillard

#7 cheatmaster

cheatmaster
  • Новобранец
  • 9 сообщений

Отправлено 01 Январь 2011 - 23:51

CURL.
Делаешь запрос и смотришь ответ сервера. Если 404 - файла нет. Если 200 - есть.

Да? А если в .htaccess редирект стоит?
  • 0

#8 Mr. Positive

Mr. Positive
  • Пользователь
  • 849 сообщений

Отправлено 02 Январь 2011 - 13:04

cheatmaster,
если в .htaccess редирект стоит, то вроде бы другой заголовок должен быть но ни 200, хотя я могу и ошибаться :)
  • 0
Former IAPB 8X.
Bachelor of Eternity

#9 Akhenaton

Akhenaton
  • Постоялец
  • 8 038 сообщений

Отправлено 02 Январь 2011 - 15:15

если редирект, то 302.
  • 0