Мне нужно проверить, существует ли конкретный файл на удаленном сервере. Использование is_file()
и file_exists()
не работает. Любые идеи, как сделать это быстро и легко?
Как проверить, существует ли файл из URL-адреса
Ответ 1
Вы должны использовать CURL
function does_url_exists($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($code == 200) {
$status = true;
} else {
$status = false;
}
curl_close($ch);
return $status;
}
Ответ 2
Вам не нужно CURL для этого... Слишком много накладных расходов, просто хочу проверить, существует ли файл или нет...
Используйте PHP get_header.
$headers=get_headers($url);
Затем проверьте, есть ли $result [0] 200 OK (это означает, что файл есть)
Функция проверки работоспособности URL-адреса может быть следующей:
function UR_exists($url){
$headers=get_headers($url);
return stripos($headers[0],"200 OK")?true:false;
}
/* You can test a URL like this (sample) */
if(UR_exists("http://www.amazingjokes.com/"))
echo "This page exists";
else
echo "This page does not exist";
Ответ 3
Я только что нашел это решение:
if(@getimagesize($remoteImageURL)){
//image exists!
}else{
//image does not exist.
}
Источник: http://www.dreamincode.net/forums/topic/11197-checking-if-file-exists-on-remote-server/
Ответ 4
Привет, согласно нашему тесту между двумя разными серверами, результаты выглядят следующим образом:
с использованием curl для проверки 10 файлов .png(каждый около 5 мб) был в среднем 5,7 сек. с помощью проверки заголовка для того же самого элемента потребовалось в среднем 7,8 секунды!
Итак, в нашем тестовом скручивании было намного быстрее, если вам нужно проверить более крупные файлы!
наша функция rot:
function remote_file_exists($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if( $httpCode == 200 ){return true;}
return false;
}
вот наш пример проверки заголовка:
function UR_exists($url){
$headers=get_headers($url);
return stripos($headers[0],"200 OK")?true:false;
}
Ответ 5
Сделайте запрос с завихрением и посмотрите, возвращает ли он код состояния 404. Сделайте запрос с использованием метода запроса HEAD, чтобы он возвращал заголовки без тела.
Ответ 6
Вы можете использовать функцию file_get_contents();
if(file_get_contents('https://example.com/example.txt')) {
//File exists
}