欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

laravel 验证上传文件类型 比如 excel 的 csv xls xlsx 文件 文件类型 有大用 有大大用 有大大大用



1)在 laravel 的 请求的 rules 方法里 写上  'article_excel'=>'required|mimeTypes:application/vnd.ms-office'


image.png


类型在这里面找 http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types


当然 laravel 每个项目里都有 

vendor/fzaninotto/faker/src/Faker/Provider/File.php 文件里有

vendor/guzzlehttp/psr7/src/functions.php 文件里有



2)然后 在程序里上传文件的时候 

在 vendor/laravel/framework/src/Illuminate/Validation/Validator.php 的 ValidateMineType方法里 试下如下图所示的代码

image.png


protected function validateMimetypes($attribute, $value, $parameters)
{

   
if (! $this->isAValidFileInstance($value)) {
       
return false;
   }
   
var_dump($value->getMimeType());//得到真正的上传的 MimeType
   
var_dump($parameters);//在第1)步中请求里的 逗号分割的 rules 规则所组成的数组
     
然后 我们根据 真正的上传的 MimeType修改这个逗号分割的rules
     ,尽量多的写 比如 可能同一后缀名的 (如xls), 其 MimeType 可能不一样
     看看 MimeType http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

   
exit;

   
return $value->getPath() != '' && in_array($value->getMimeType(), $parameters);
}




普通分类: