Je dois vérifier si un fichier particulier existe sur un serveur distant. L'utilisation de is_file()
et file_exists()
ne fonctionne pas. Des idées comment faire cela rapidement et facilement?Comment vérifier si un fichier existe à partir d'une URL
Répondre
vous devez utiliser CURL
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;
}
cela fonctionne bien vous avez une ligne de faute de frappe 1 functon devrait être fonction –
Vous n'avez pas besoin de CURL pour cela ... trop de frais généraux ... vérifiez ma réponse ci-dessous (utilisez get_headers de PHP pour cela!) – patrick
comme les autres c'est aussi, ne vérifiant pas si c'est un fichier ou non, il suffit de vérifier l'URL. 'echo is_url_exists ('http://stackoverflow.com')? «Oui»: «Non», «fait écho» Oui. –
Effectuez une requête avec curl et vérifiez si elle renvoie un code d'état 404. Faites la demande en utilisant la méthode de demande HEAD pour qu'elle ne renvoie que les en-têtes sans corps.
Je viens de trouver cette solution:
if(@getimagesize($remoteImageURL)){
//image exists!
}else{
//image does not exist.
}
Source: http://www.dreamincode.net/forums/topic/11197-checking-if-file-exists-on-remote-server/
Voulez-vous dire 'getimagesize'? Comme ici: http://uk1.php.net/getimagesize si oui, les docs disent qu'il peut référencer des fichiers locaux ou distants. – Todd
Oui, corrigé. Merci! –
getimagesize est beaucoup trop lourd. Si vous voulez juste savoir si un fichier existe, utilisez PHP get_header (vérifiez ma réponse) – patrick
Vous n'avez pas besoin CURL pour ça ... Trop beaucoup de frais généraux pour juste vouloir vérifier si un fichier existe ou pas ...
Utilisez PHP's get_header.
$headers=get_headers($url);
Vérifiez ensuite si le résultat $ [0] contient 200 OK (ce qui signifie que le fichier est là)
Une fonction pour vérifier si une des œuvres d'URL peuvent être ceci:
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";
'Par défaut, get_headers utilise une requête GET pour récupérer les en-têtes' le surcoût d'une requête de curl (pas vraiment sûr de ce que cela signifie) - il y a un gaspillage de requête GET qui fait chuter le corps - au lieu d'utiliser une requête HEAD et de ne recevoir que les en-têtes. – AD7six
@ AD7six: Je supposais que la configuration de cURL en mémoire causerait une surcharge, j'ai fait quelques tests comparant les deux méthodes et vous avez raison: si vous avez la bibliothèque cURL chargée, il est toujours plus rapide d'utiliser la méthode acceptée par get_headers. J'ai comparé les 3 méthodes mentionnées: cURL est le plus rapide, puis get_headers, puis getimagesize avec l'inconvénient ajouté getimagesize ne vous dira que si une image existe. C'est ce qui a été demandé, donc c'est toujours une réponse valable ici, mais ce n'est pas très polyvalent. – patrick
@ ad7six Êtes-vous sûr que get_headers demande le corps? fyi, vous pouvez remplacer la requête GET via le contexte de flux: stream_context_set_default (['http' => ['method' => 'HEAD']]); $ headers = get_headers ('http://example.com'); – Tobias
Salut selon notre test entre 2 serveurs différents les résultats sont les suivants:
en utilisant curl pour vérifier 10 fichiers .png (chacun environ 5 mb) était en moyenne 5,7 secondes. en utilisant la vérification de l'en-tête pour la même chose a pris en moyenne 7,8 secondes! Donc, dans notre test, le curl était beaucoup plus rapide si vous deviez vérifier des fichiers plus volumineux!
notre fonction boucle est:
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;
}
Voici notre échantillon de contrôle d'en-tête:
function UR_exists($url){
$headers=get_headers($url);
return stripos($headers[0],"200 OK")?true:false;
}
- 1. Comment vérifier si un fichier existe à une URL particulière?
- 2. puis-je vérifier si un fichier existe à une URL?
- 3. Comment vérifier si un fichier existe?
- 4. Comment vérifier si un fichier existe dans un fichier makefile
- 5. Comment vérifier si un fichier existe dans un fichier war?
- 6. Comment vérifier si un fichier existe sur un serveur externe
- 7. Vérifier si un fichier existe (Perl)
- 8. Vérifier si une URL existe ou non
- 9. Vérifier si le fichier existe
- 10. vérifier si un fichier existe-c objectif
- 11. comment vérifier si un fichier texte dans MATLAB existe
- 12. vérifier si le fichier existe
- 13. comment vérifier si un fichier existe avant de le créer
- 14. Ecrire un fichier et vérifier si un fichier existe
- 15. Vérifier si un programme existe à partir d'un script python
- 16. Comment vérifier si un fichier existe dans un dossier?
- 17. Comment vérifier si un répertoire existe avant d'insérer un fichier
- 18. vérifier si le fichier existe en javascript?
- 19. Comment vérifier si un utilisateur postgres existe?
- 20. Comment puis-je vérifier .htaccess si un nouveau fichier existe?
- 21. Comment vérifier si un fichier existe en javascript?
- 22. comment puis-je vérifier si un fichier existe?
- 23. Comment vérifier si un fichier existe dans une télécommande?
- 24. comment vérifier si quelque chose fichier (un nombre) .php existe?
- 25. Comment vérifier si un fichier existe en python?
- 26. Comment vérifier si un fichier mappé en mémoire existe?
- 27. Comment vérifier si l'image existe avec une URL donnée?
- 28. Comment vérifier si un fichier existe sans vérifier si j'ai la permission de le lire?
- 29. comment vérifier si un TextView existe
- 30. vérifier si le fichier existe, sinon, créer
pourquoi ne pas travailler ??? – JellyBelly
Vous pouvez utiliser cette fonction getimagesize ("url"); . Ref: http://php.net/manual/fr/fonction.getimagesize.php – InventorX