J'ai besoin de voir si une image spécifique existe sur mon cdn.
J'ai essayé ce qui suit et cela ne fonctionne pas:
if (file_exists(http://www.example.com/images/$filename)) {
echo "The file exists";
} else {
echo "The file does not exist";
}
Même si l'image existe ou n'existe pas, elle dit toujours "Le fichier existe". Je ne sais pas pourquoi cela ne fonctionne pas ...
file_exists
vers un emplacement distant sera très lent.Réponses:
Vous avez besoin au moins du nom de fichier entre guillemets (sous forme de chaîne):
Assurez
$filename
- vous également qu'il est correctement validé. Et puis, cela ne fonctionnera que lorsqu'ilallow_url_fopen
est activé dans votre configuration PHPla source
Cela n'a pas fonctionné pour moi. La façon dont je l'ai fait a été d'utiliser getimagesize.
Notez que le '@' signifiera que si l'image n'existe pas (auquel cas la fonction
getimagesize(http://www.mydomain.com/images/filename.png) [function.getimagesize]: failed
renvoie généralement une erreur:) elle renverra false.la source
@getimagesize('//path/to/image.jpg')
ne fonctionnera pas).Eh bien,
file_exists
ne dit pas si un fichier existe, il dit si un chemin existe . ⚡⚡⚡⚡⚡⚡⚡Donc, pour vérifier s'il s'agit d'un fichier, vous devez utiliser
is_file
avecfile_exists
pour savoir s'il y a vraiment un fichier derrière le chemin, sinonfile_exists
il retourneratrue
pour tout chemin existant.source
Essayez comme ceci:
source
Voici le moyen le plus simple de vérifier si un fichier existe:
source
Une chose que vous devez d'abord comprendre: vous n'avez pas de fichiers .
Un fichier est un sujet d'un système de fichiers , mais vous faites votre demande en utilisant le protocole HTTP qui ne prend en charge aucun fichier mais des URL.
Vous devez donc demander un fichier inexistant à l'aide de votre navigateur et voir le code de réponse. si ce n'est pas 404, vous ne pouvez pas utiliser de wrappers pour voir si un fichier existe et vous devez demander votre cdn en utilisant un autre protocole, FTP par exemple
source
source
Si le fichier se trouve sur votre domaine local, vous n'avez pas besoin de mettre l'URL complète. Seul le chemin d'accès au fichier. Si le fichier se trouve dans un répertoire différent, vous devez faire précéder le chemin de "."
Souvent, le "." est laissé de côté, ce qui entraînera l'affichage du fichier comme inexistant, alors qu'il le fait en fait.
source
Il existe une différence majeure entre
is_file
etfile_exists
.is_file
renvoie vrai pour les fichiers (normaux):file_exists
renvoie true pour les fichiers et les répertoires:Remarque: Consultez également cette question stackoverflow pour plus d'informations sur ce sujet.
source
Vous devez utiliser un chemin absolu pour voir si le fichier existe.
Si vous écrivez pour un CMS ou un framework PHP, pour autant que je sache, tous ont défini une constante pour le chemin racine du document.
Par exemple, WordPress utilise ABSPATH qui peut être utilisé globalement pour travailler avec des fichiers sur le serveur en utilisant votre code ainsi que l'URL du site.
Exemple Wordpress:
Je fais un effort supplémentaire ici :). Parce que ce code n'aurait pas besoin de beaucoup de maintenance et assez solide, je l'écrirais avec une instruction if:
Déclaration sténographique IF expliquée:
source
vous pouvez utiliser cURL. Vous pouvez demander à cURL de ne vous donner que les en-têtes, et non le corps, ce qui pourrait le rendre plus rapide. Un domaine défectueux peut toujours prendre un certain temps car vous attendez que la demande expire; vous pouvez probablement modifier la durée du délai d'expiration en utilisant cURL.
Voici un exemple:
source
Vous pouvez utiliser la
file_get_contents
fonction pour accéder aux fichiers distants. Voir http://php.net/manual/en/function.file-get-contents.php pour plus de détails.source
Si vous utilisez curl, vous pouvez essayer le script suivant:
}
URL de référence: https://hungred.com/how-to/php-check-remote-email-url-image-link-exist/
essaye ça :
la source
Si le chemin de votre image est relatif à la racine de l'application, il est préférable d'utiliser quelque chose comme ceci:
Exemple d'utilisation de cette fonction:
Je pense que c'est une bonne idée de créer quelque chose comme une bibliothèque pour vérifier l'existence de l'image applicable à différentes situations. Au-dessus de nombreuses réponses intéressantes que vous pouvez utiliser pour résoudre cette tâche.
la source
Lisez les 5 premiers octets du formulaire HTTP en utilisant
fopen()
,fread()
puis utilisez ceci:pour détecter l'image.
la source
file_exists
lit non seulement les fichiers, mais aussi les chemins. donc quand$filename
est vide, la commande s'exécuterait comme si elle était écrite comme ceci:si le répertoire / images / existe, la fonction retournera toujours
true
.Je l'écris généralement comme ceci:
la source
file_exists($filepath)
renverra un vrai résultat pour un répertoire et un chemin de fichier complet, ce n'est donc pas toujours une solution lorsqu'un nom de fichier n'est pas passé.is_file($filepath)
ne retournera true que pour les chemins de fichiers completsla source
vous avez besoin du chemin du serveur avec file_exists
par exemple
la source
Travaille pour moi.
la source