1

拡張子を書かずに画像の拡張子を取得する方法はありますか?

たとえば、以下のコードでは、GIF ファイルであることを知るために image.GIF を記述する必要があります。

pathinfo('/testdir/dir2/image.gif', PATHINFO_EXTENSION);
4

5 に答える 5

1

私は常にこの関数を使用して、ファイルの MIME タイプを見つけます。

function validateMimeType($filePath, $extensions) {
    $finfo      = finfo_open(FILEINFO_MIME);
    $mimeType   = finfo_file($finfo, $filePath);

    finfo_close($finfo);

    return preg_match("/$extensions/i", $mimeType);
}

$extensions は文字列で、次のように必要な形式を定義します。

$extension = "jpg|jpeg|png";
于 2013-04-24T11:28:32.843 に答える
0

基本的に、いいえ。

image.gif と image.jpg の 2 つの画像がある場合、どのような結果が予想されますか? ファイルに関する情報を取得したいので、その名前を使用してそのファイルを呼び出す必要があります。拡張子は名前の一部です。

dir のすべての内容を読み取り、必要なファイルを除外できます。

$dir = "/testdir/dir2";
foreach(scandir($dir) as $file)
{
  if(is_dir($file) == false && $file != ".." && $file != ".")
  {
    var_dump(pathinfo(dir . '/' . $file, PATHINFO_EXTENSION));
  }
} 

Pathinfo は、ファイル名の拡張子と名前への分割を簡素化するために作成されました。ファイルタイプを決定することではありません。名前がハードコードされていることがわかっている場合、なぜ名前を部分に分割したいのでしょうか?

于 2013-04-24T11:35:08.777 に答える
0

実際に gif かどうかを判断するには、MIME タイプをリクエストする必要があります。

例:
http://www.sanisoft.com/blog/2010/05/17/how-to-use-php-fileinfo-extension-to-get-file-mime-type/

于 2013-04-24T11:29:09.487 に答える
0

値のケースを含むスイッチで exif_imagetype($file_name) を使用すると、名前に含まれていなくても ext が取得されます。

http://php.net/manual/en/function.exif-imagetype.php

$type = false;
switch(exif_imagetype($file_name)) {
   case 1:
      $type = 'gif';
   break;
   case 2:
      $type = 'jpeg';
   break;
   case 3:
      $type = 'png';
   break;
}
于 2013-04-24T11:29:17.913 に答える
-1
$ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);

何らかの理由で反対票を投じた「自作コード」を取り除く。

上記のコードはもう少し役立つでしょうか?

PHP には独自のデバイスがあり、pathinfo は正常に動作するはずです。

参考のため:

function get_file_extension($file_name) {
    return substr(strrchr($file_name,'.'),1);
}

何らかの代替手段として機能します。読み取るファイルの正確な性質を知らなければ、正確な答えを出すのは困難です。

于 2013-04-24T11:26:52.593 に答える