URL が画像の URL であることを検出する最良の方法は何ですか?
5 に答える
PHP の使用:
最も安全 - 実際の画像データを取得します。
getimagesize()
ファイル内のヘッダー バイトを実際に読み取って、イメージの種類を判別するためにaを実行します。最速 - リソースを取得し、応答ヘッダーを解析して、ヘッダーを探します
content-type
。この方法は、最初の方法ほど信頼性が高くありません。サーバーが嘘をついていたり、構成が間違っていたりする可能性があります。content-type
さらに高速 - URL で HEAD リクエストを実行し、ヘッダーを探します。動的画像リソースでは機能しない場合があります。私はこれについての経験がないので、走行距離は異なる場合があります。非常に偏執的で最も安全ですが、遅い - PHP を使用して実際の画像データを取得し、GD ライブラリを使用してそれらを新しい画像リソースにコピーし、結果を保存します。このプロセスがうまくいけば、汚染されていない有効な画像であることが保証されます。リソース集約型。ブラウザがサポートしているが GD がサポートしていないいくつかの有効な画像形式は、表に該当します。
私は最初のオプションを選びます。
JavaScript の使用:
- 画像リソースを
img
要素に読み込みます。onload
イベントが発生し、その後画像に物理的な寸法がある場合、ブラウザは画像を読み込むことができました。
HTTPヘッダーを見てください。ちょっとした考え。
その URL の HTTP 接続を要求したら、応答のヘッダーを確認してください... MIME タイプを探してみてください。
- ヘッダーを調べる
- URL の拡張子を確認する ( .gif/ .png など)
URL を要求したときにサーバーが返す応答ではなく、URL しかない場合は、ファイル拡張子に基づいて推測するしかありませんが、.jpg で終わるファイルが.jpg であるという保証はありません。 image または .php で終わるファイルは画像ではありません。
おそらく、.jpg、.gif、.png などで終わる URL は画像になるので、かなり満足できるかもしれませんが、保証はされません。
それ以外の場合は、それを取得しない限り、本質的に不可能です。