webentwicklung-frage-antwort-db.com.de

So prüfen Sie, ob eine Datei aus einer URL besteht

Ich muss überprüfen, ob eine bestimmte Datei auf einem Remote-Server vorhanden ist. Die Verwendung von is_file() und file_exists() funktioniert nicht. Irgendwelche Ideen, wie das schnell und einfach geht?

34
David

sie müssen CURL verwenden

function is_url_exist($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;
}
63
Amila

Dafür brauchen Sie keine CURL ... Zu viel Aufwand, um nur prüfen zu wollen, ob eine Datei existiert oder nicht ... 

Verwenden Sie PHP's get_header

$headers=get_headers($url);

Prüfen Sie dann, ob $ result [0] 200 OK enthält (was bedeutet, dass die Datei vorhanden ist).

Eine Funktion zum Überprüfen, ob eine URL funktioniert, kann folgende sein:

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";
64
patrick

Ich habe gerade diese Lösung gefunden:

if(@getimagesize($remoteImageURL)){
    //image exists!
}else{
    //image does not exist.
}

Quelle: http://www.dreamincode.net/forums/topic/11197-checking-if-file-exists-on-remote-server/

14
Daniel Kossmann

Hallo laut unserem Test zwischen 2 verschiedenen Servern sind die Ergebnisse wie folgt:

die Verwendung von curl zum Überprüfen von 10 .png-Dateien (jeweils etwa 5 MB) dauerte durchschnittlich 5,7 Sekunden.

In unserem Test war Curl viel schneller, wenn Sie größere Dateien prüfen müssen!

unsere Curl-Funktion ist:

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;
}

hier ist unser Header-Check-Beispiel:

function UR_exists($url){
   $headers=get_headers($url);
   return stripos($headers[0],"200 OK")?true:false;
}
7
Daniel de coder

Machen Sie eine Anfrage mit curl und prüfen Sie, ob ein Statuscode 404 zurückgegeben wird. Führen Sie die Anforderung mit der Anforderungsmethode HEAD aus, sodass nur die Header ohne Text zurückgegeben werden.

1
fivedigit

Sie können die Funktion file_get_contents () verwenden.

if(file_get_contents('https://example.com/example.txt')) {
    //File exists
}
0
Tom Aschmann