2

URL が画像の URL であることを検出する最良の方法は何ですか?

4

5 に答える 5

9

PHP の使用:

  • 最も安全 - 実際の画像データを取得します。getimagesize()ファイル内のヘッダー バイトを実際に読み取って、イメージの種類を判別するためにaを実行します。

  • 最速 - リソースを取得し、応答ヘッダーを解析して、ヘッダーを探しますcontent-type。この方法は、最初の方法ほど信頼性が高くありません。サーバーが嘘をついていたり、構成が間違っていたりする可能性があります。

  • content-typeさらに高速 - URL で HEAD リクエストを実行し、ヘッダーを探します。動的画像リソースでは機能しない場合があります。私はこれについての経験がないので、走行距離は異なる場合があります。

  • 非常に偏執的で最も安全ですが、遅い - PHP を使用して実際の画像データを取得し、GD ライブラリを使用してそれらを新しい画像リソースにコピーし、結果を保存します。このプロセスがうまくいけば、汚染されていない有効な画像であることが保証されます。リソース集約型。ブラウザがサポートしているが GD がサポートしていないいくつかの有効な画像形式は、表に該当します。

私は最初のオプションを選びます。

JavaScript の使用:

  • 画像リソースをimg要素に読み込みます。onloadイベントが発生し、その後画像に物理的な寸法がある場合、ブラウザは画像を読み込むことができました。
于 2010-12-14T23:47:38.767 に答える
2

HTTPヘッダーを見てください。ちょっとした考え。

于 2010-12-14T23:46:11.500 に答える
2

その URL の HTTP 接続を要求したら、応答のヘッダーを確認してください... MIME タイプを探してみてください。

于 2010-12-14T23:46:51.373 に答える
1
  • ヘッダーを調べる
  • URL の拡張子を確認する ( .gif/ .png など)
于 2010-12-14T23:48:39.923 に答える
1

URL を要求したときにサーバーが返す応答ではなく、URL しかない場合は、ファイル拡張子に基づいて推測するしかありませんが、.jpg で終わるファイルが.jpg であるという保証はありません。 image または .php で終わるファイルは画像ではありません。

おそらく、.jpg、.gif、.png などで終わる URL は画像になるので、かなり満足できるかもしれませんが、保証はされません。

それ以外の場合は、それを取得しない限り、本質的に不可能です。

于 2010-12-14T23:49:58.190 に答える