Laravel 不同文件类型的最大文件大小不同?

Laravel 不同文件类型的最大文件大小不同?,laravel,laravel-5,laravel-5.3,Laravel,Laravel 5,Laravel 5.3,我想为不同的文件类型设置不同的最大文件大小,如: 图像(PNG、JPEG和GIF)的最大文件大小为10 MB 视频最大文件大小为50 MB(MP4) 现在,我的验证器只允许所有文件类型使用10 MB: $validator = Validator::make($request->all(), [ 'file' => 'required|max:10000|mimes:jpg,jpeg,png,gif,mp4', ]); 如何为不同的文件类型设置不同的最大文件大小?您可以

我想为不同的文件类型设置不同的最大文件大小,如:

  • 图像(PNG、JPEG和GIF)的最大文件大小为10 MB
  • 视频最大文件大小为50 MB(MP4)
现在,我的验证器只允许所有文件类型使用10 MB:

$validator = Validator::make($request->all(), [
    'file' => 'required|max:10000|mimes:jpg,jpeg,png,gif,mp4',
]);

如何为不同的文件类型设置不同的最大文件大小?

您可以使用if条件规则解决此问题。我知道,这不是最佳做法,但它可以解决您的问题

$default_max_value = 10000;
if($request->hasFile('file') && $request->get('file')->getClientOriginalExtension() == 'mp4'){
    $default_max_value = 50000;
}

$validator = Validator::make($request->all(), [
    'file' => 'required|max:'.$default_max_value.'|mimes:jpg,jpeg,png,gif,mp4',
]);

这实际上是一个很好的解决方案,但我会使用
getMimeType()
,因为用户意识到使用可能会对扩展撒谎(这也在symfonyapi页面上说明)当然,从安全角度来看,使用
getMimeType
比使用
getClientOriginalExtension()
要好。但是,我不确定这是最好的解决办法。拉威尔总是有一些关于查兰热的魔法。实际上,它是交响乐的组成部分。这两个方面都是最好的。我也会做客户端验证(JavaScript),这样用户就不会上传12mb的图片,然后它会说“你不能”,更好的方法是允许用户上传50mb的文件,然后裁剪图片/调整图片大小(我知道这不是你要求的,但这是一种解决方案)-用户需要的工作量更多,用户需要的工作量更少。即使如此,我也不知道有多少照片是作为原始图像拍摄的,然后转换成合适的格式,大小超过10MB。玩得开心:)