Php Laravel 5-从文件扩展名获取MIME类型

Php Laravel 5-从文件扩展名获取MIME类型,php,laravel,laravel-5,mime,Php,Laravel,Laravel 5,Mime,在Laravel5中,如何从扩展中获取MIME类型?如果有一种将扩展数组转换为MIME数组的方法,效果会更好 例如,如何将数组('doc','xls')转换为数组('application/msword','application/vnd.ms excel')?首先,您需要下载此公共域文件: 然后使用以下函数读取文件并获取扩展名对应的MIME类型: function getMIME($extension) { $file = "mime.types"; $in = fopen($

在Laravel5中,如何从扩展中获取MIME类型?如果有一种将扩展数组转换为MIME数组的方法,效果会更好


例如,如何将
数组('doc','xls')
转换为
数组('application/msword','application/vnd.ms excel')

首先,您需要下载此公共域文件:

然后使用以下函数读取文件并获取扩展名对应的
MIME
类型:

function getMIME($extension) {
    $file = "mime.types";
    $in = fopen($file, "r");
    while (($line = fgets($in)) !== false) {
        if (preg_match("/([a-z]+\/[a-z]+)\s+([a-z\s]*)\b($extension)\b/", $line, $match)) {
            return $match[1];
        }
    }
    fclose($in);
    return "error";
}

echo getMIME("doc");
输出:

应用程序/msword

要转换阵列,请执行以下操作:

$myArray = array('doc', 'xls');

foreach($myArray as $key => $value){
    $myArray[$key] = getMIME($value);
}
默认情况下,在Laravel 5中包括,此库中有和
fromExtension()
方法,它可以执行所要求的操作

因此,要获取单个扩展的MIME类型:

function getMIME($extension) {
    $file = "mime.types";
    $in = fopen($file, "r");
    while (($line = fgets($in)) !== false) {
        if (preg_match("/([a-z]+\/[a-z]+)\s+([a-z\s]*)\b($extension)\b/", $line, $match)) {
            return $match[1];
        }
    }
    fclose($in);
    return "error";
}

echo getMIME("doc");
$mimetypes=new\GuzzleHttp\mimetypes;
$mime=$mimetypes->fromExtension($extension);
要从扩展数组中获取MIME类型数组,请执行以下操作:

$mimetypes=new\GuzzleHttp\mimetypes;
$mimes=[];
foreach($扩展为$扩展){
$mimes[]=$mimetypes->fromExtension($extension);
}
当composer.json中有“guzzlehttp/guzzle”:“~5.3 | ~6.0”时,您可以使用:

$mimetype = \GuzzleHttp\Psr7\mimetype_from_filename('foo.doc');
$mimetype = \GuzzleHttp\Psr7\mimetype_from_extension('doc');
这是L5中最好的:

\File::mimeType('physical/path/to/file.ext');
返回我使用的“image/png”

它可以通过扩展名提供mimetype,而不需要现有文件

来获取文件mimetype 验证码
您可以从上面的代码中获取文件类型,然后您可以将其设置为mimetypes类似于mp3的set

此文件包含所有MIME类型及其扩展名。您只需要以编程方式搜索扩展名。从GUZULE 6.0起,GUZULE http\Mimetypes已从扩展名移动到GUZULE http\Psr7\mimetype_中的一个函数,从函数phpdoc中的文件名将从文件名中删除不推荐的mimetypeGuzzle http/psr7:2.0。改用MimeType::fromFilename。
$request->file->getMimeType()
$request->validate([
    'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg'
    'mp3'=>'required|mimetypes:audio/mpeg'
   ]);