10

Laravel 3 にはFile::mime()メソッドがあり、拡張子からファイルの MIME タイプを簡単に取得できました。

$extension = File::extension($path);
$mime = File::mime($extension);

Laravel 4 にアップグレードすると、次のエラーが表示されます。

未定義のメソッド Illuminate\Filesystem\Filesystem::mime() の呼び出し

また、 Filesystem API docsで MIME タイプについての言及も見当たりません。

Laravel 4でファイルのMIMEタイプを取得するための推奨される方法は何ですか(これはユーザーがアップロードしたファイルではないことに注意してください)?

4

5 に答える 5

18

私が見つけた解決策の 1 つは、Symfony HttpFoundation File クラスを使用することです(これは、Laravel 4 の依存関係として既に含まれています)。

$file = new Symfony\Component\HttpFoundation\File\File($path);
$mime = $file->getMimeType();

実際、File クラスはSymfony の MimeTypeGuesserクラスを使用しているため、これも機能します。

$guesser = Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser::getInstance();
echo $guesser->guess($path);

しかし、残念ながら、予期しない結果が得られます: css ファイルへのパスを渡すときに、 text/cssではなくtext/plainを取得しています。

于 2013-10-30T14:54:36.067 に答える
7

使用できるファイルをアップロードしたばかりの場合:

Input::file('field_name')->getMimeType();

ここでもっと見ることができます!少しでもお役に立てれば幸いです!:D

編集:
Input::fileからのある種の拡張でFileあるため、使用することFile::get('file')->getMimeType();もできます。テストしませんでしたが、動作する必要があります。

于 2013-10-30T13:59:32.430 に答える
1
public function mimeType($path)
{
    return finfo_file(finfo_open(FILEINFO_MIME_TYPE), $path);
}

参照: https://github.com/illuminate/filesystem/blob/master/Filesystem.php#L194

于 2015-08-28T13:56:35.207 に答える