2010-10-02 6 views
0

Hey; J'utilise actuellement la manière suivante de vérifier si une image existe sur un serveur:PHP: Vérifier si un fichier existe sur un serveur

if (@getimagesize($s3url)) 
    { 
     //do stuff 
    } 

Inutile de dire, c'est à peine la manière la plus élégante de le faire ... Mais honnêtement, je ne sais pas vraiment où commencer à chercher une meilleure solution. Je me demandais si peut-être il était possible de simplement envoyer une requête, recevoir une réponse HTTP (c'est-à-dire si la réponse HTTP est 200, continuer, sinon, évaluer à faux); mais est-ce la meilleure façon?

Quelle est la meilleure fonction pour vérifier l'existence d'un fichier (image)?

+1

Pour vérifier si le contenu existe sur un serveur externe, il DOIT être fait avec des contrôles HTTP, pas des fonctions telles que la taille de fichier, car ils ouvrent les ressources qui sont sur le serveur local. – RobertPitt

Répondre

4

file_exists() puis vérifiez si le fichier est vraiment une image ou non à l'aide getimagesize()

0

Que diriez-vous de cette

if(filesize($url)) 
{ 
} 

De cette façon, vous n'êtes pas déclenchez les opérations de GD ..

+0

'getimagesize' n'est pas une opération GD (bien que vous ayez besoin du fichier complet pour cela) –

2

I Je ne suis pas sûr si file_exists fonctionne pour les URL distantes, donc vous serez plus sûr d'utiliser ceci:

function url_exists($url) { 
    $handle = curl_init($url); 

    curl_setopt($handle, CURLOPT_HEADER, false); 
    curl_setopt($handle, CURLOPT_FAILONERROR, true); 
    curl_setopt($handle, CURLOPT_NOBODY, true); 
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, false); 
    $connectable = curl_exec($handle); 
    curl_close($handle); 
    return $connectable; 
} 
Questions connexes