Question

Quelle est la meilleure façon de détecter qu'une URL est celle d'une image?

Était-ce utile?

La solution

En utilisant PHP:

  • Safest - récupérer les données d'image réelle. Faites un getimagesize() pour déterminer le type d'image en lisant réellement l'en-tête octets dans le fichier.

  • Le plus rapide - chercher la ressource, analyser les en-têtes de réponse et recherchez l'en-tête de content-type. Cette méthode est pas aussi fiable que le premier. Pouvait être couché ou mal configuré Le serveur

  • Encore plus rapide - faire une requête HEAD sur l'URL et recherchez l'en-tête de content-type. Peut ne pas fonctionner pour les ressources d'images dynamiques. Je n'ai aucune expérience avec cela, donc peut varier.

  • Ultra-paranoïaque le plus sûr mais slooow - récupérer les données d'image réelles à l'aide de PHP, les copier dans une nouvelle ressource d'image en utilisant la bibliothèque GD et sauvegarder le résultat. Si ce processus fonctionne, il est garantie pour une image valide, viciée. Ressources à forte intensité; certains formats d'image valides qu'un navigateur prend en charge mais GD ne pas tomberont sous la table.

J'aller pour la première option.

L'utilisation de JavaScript:

  • Charger la ressource d'image dans un élément img. Si l'événement se déclenche de onload, et l'image a des dimensions physiques après, le navigateur a réussi à charger l'image.

Autres conseils

Peut être regarder à l'en-têtes HTTP? Juste une pensée.

Essayez de vérifier les en-têtes de la réponse une fois que vous avez demander une connexion HTTP de cette URL ... essayez de rechercher le type MIME.

  • têtes
  • pour vérifier l'extension dans l'URL ( .gif / .png etc)

Si vous avez seulement l'URL plutôt que la réponse du serveur vous donnera lorsque vous demandez l'URL, la seule chose que vous pouvez faire est de deviner basé sur l'extension de fichier, mais il n'y a aucune garantie qu'un fichier se terminant par. jpg est une image ou qu'un fichier se terminant par .php n'est pas une image.

Vous pouvez probablement être raisonnablement heureux urls se terminant par .jpg, .gif, .png, etc vont être des images, mais il est pas garanti.

Pour toute autre chose son impossible à moins que vous essentiellement retrive il.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top