Wie erkennt man am besten, dass eine URL die eines Bildes ist?Wie erkennt man am besten, dass eine URL die eines Bildes ist?
Antwort
PHP:
Sicherste - holen die tatsächlichen Bilddaten. Führen Sie eine
getimagesize()
aus, um den Bildtyp zu ermitteln, indem Sie die Header-Bytes in der Datei tatsächlich lesen.Schnellste - holen Sie die Ressource, analysieren Sie die Antwortheader und suchen Sie nach dem
content-type
Header. Diese Methode ist nicht so zuverlässig wie die erste: Der Server könnte lügen oder falsch konfiguriert sein.Noch schneller - eine HEAD-Anfrage für die URL, und suchen Sie nach der
content-type
Header. Funktioniert möglicherweise nicht für dynamische Bildressourcen. Ich habe keine Erfahrung damit, so kann die Laufleistung variieren.Ultra-paranoid sicherste aber slayow - holen Sie die tatsächlichen Bilddaten mit PHP, kopieren Sie sie in eine neue Bildquelle mit der GD-Bibliothek, und speichern Sie das Ergebnis. Wenn dieser Prozess funktioniert, ist es garantiert ein gültiges, unlackiertes Bild zu sein. Ressourcenintensiv; einige gültige Bildformate, die ein Browser unterstützt, aber GD wird nicht unter den Tisch fallen.
Ich würde für die erste Option gehen.
JavaScript Verwendung:
- Laden der Bildressource in eine
img
Element. Wenn das Ereignisonload
ausgelöst wird und das Bild anschließend physische Abmessungen aufweist, konnte der Browser das Bild laden.
Der Inhaltstyp garantiert noch nicht, dass es wirklich (wirklich) ist; gesehene Gelegenheiten, wenn Dinge falsch behandelt werden. Ich mag jedoch den stabileren getimagesize() Check. – zanlok
Den letzten Teil (JavaScript) verwenden: http://jsfiddle.net/qXTQS/ –
Schauen Sie sich die HTTP-Header an? Nur ein Gedanke.
- inspizieren headers
- Prüfung für die Erweiterung in URL (.gif/.png etc)
Die Erweiterung gibt oft korrekte Ergebnisse zurück, ist aber kein zuverlässiger Faktor in URLs –
Wenn Sie nur die URL lieber als die Antwort des Servers wird Ihnen, wenn Sie fordern die URL an, dann können Sie nur anhand der Dateierweiterung raten, aber es gibt KEINE Garantie, dass eine Datei mit der Endung .jpg ein Bild ist oder dass eine Datei mit der Endung .php kein Bild ist.
Sie können wahrscheinlich ziemlich glücklich URLs mit Endung in .jpg, .gif, .png usw. werden Bilder sein, aber es ist nicht garantiert.
Für alles andere ist es im Wesentlichen unmöglich, es sei denn Sie retrive es.
- 1. Wie erkennt man am besten, ob Excel 2003 installiert ist?
- 2. Wie erkennt man am besten, ob ein IDataReader leer ist?
- 3. Wie erkennt man die Inaktivität eines Benutzers in einer Silverlight App am besten?
- 4. Wie man am besten auf die Freigabe eines Filelock wartet
- 5. Wie erkennt man, ob eine URL eine Intranet-URL ist?
- 6. Wie sichert man am besten eine Datenbankverbindungszeichenfolge?
- 7. jQuery.ajax() - Wie man Timeouts am besten behandelt?
- 8. Wie erkennt man, dass CGAffineTransform umgedreht ist?
- 9. Wie erkennt die App, dass eine Komponente eine Seite ist
- 10. Wie implementiert man die Versionskontrolle für die Webentwicklung am besten?
- 11. Wie kann man am besten eine PHP-Anmeldeseite erstellen?
- 12. Wie man am besten alte Commits zerquetscht
- 13. Wie kommuniziert man Architekturdesign am besten?
- 14. die man am besten ist für null oder leer Scheck
- 15. Wie liest man GetResponseStream() am besten?
- 16. Wie erhöht man die Schärfe eines Bildes?
- 17. Wie man eine Website am besten von Subversion aktualisiert
- 18. Wie man ein Tupelargument am besten weitergibt?
- 19. Android-Projekt: Wie man die Dateien am besten organisiert
- 20. Wie am besten einzurichten core.clj
- 21. Wie liest man am besten eine Komma-getrennte Konfigurationsdatei?
- 22. Wie implementiert man am besten den dynamischen URL/Controller-Namen, der datenbankgesteuert ist?
- 23. Wie schneidet man eine URL am besten ab, sodass sie in ein Layout passt?
- 24. Wie man am besten Link zu einem API-Controller
- 25. Wie berechnet man am besten die Summe einer Objekteigenschaft?
- 26. Wie die URL eines Bildes bekommen nur in PHPhotoLibrary hinzugefügt
- 27. Wie erkennt man, ob das Laden eines Bildes eine OutOfMemory-Ausnahme in .NET auslöst?
- 28. Wo ist die Logik für gekoppelte Domänenmodelle am besten?
- 29. Wie kann die Clientsitzung am besten ablaufen?
- 30. Wie erkennt PHP, dass eine Sitzung abgelaufen ist?
Am besten, am sichersten oder am schnellsten? –
Mit oder ohne zuerst eine Anfrage an sie? –
@MK_Dev: Sie können dies nicht feststellen, ohne eine Anfrage zu stellen. Ein Server kann unabhängig von der Dateierweiterung beliebige Inhalte für beliebige URLs zurückgeben.(Es gibt nicht wirklich ein Konzept der Dateierweiterung für URLs.) – cdhowie