首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Laravel中验证最大文件大小?

如何在Laravel中验证最大文件大小?
EN

Stack Overflow用户
提问于 2016-05-25 17:15:15
回答 2查看 143.2K关注 0票数 60

我正在尝试在Laravel中验证最大文件大小为500kb:

代码语言:javascript
运行
复制
$validator = Validator::make($request->all(), [
    'file' => 'size:500',
]);

但是这个文件应该正好是500kb大小。如何编辑此规则,使其在大于500kb时返回错误?

我已经尝试过了:

代码语言:javascript
运行
复制
'file' => 'size:>=500'
'file'  => 'size:max:500'

文档对此只字不提:

大小:值

验证字段的大小必须与给定值匹配。对于字符串数据,该值对应于字符数。对于数字数据,该值对应于给定的整数值。对于文件,size对应于以in为单位的文件大小。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-25 17:27:51

根据the documentation的说法

代码语言:javascript
运行
复制
$validator = Validator::make($request->all(), [
    'file' => 'max:500000',
]);

该值以千字节为单位。即max:10240 =最大10MB。

票数 140
EN

Stack Overflow用户

发布于 2019-02-26 06:42:12

编辑:警告!这个答案在我的XAMPP OsX环境中有效,但是当我将它部署到AWS EC2时,它并没有阻止上传尝试。

我想删除这个答案,因为它是错误的,但我会解释是什么让我被绊倒了

我的文件上传域被命名为' upload‘,所以我得到了"The upload failed to upload.“此消息来自validation.php中的以下行:

在resources/lang/en/validaton.php中:

'uploaded' => 'The :attribute failed to upload.',

这是当文件大小超过PHP设置的限制时显示的消息。

我想重写此消息,通常可以通过将第三个参数$messages数组传递给Validator::make()方法来实现。

然而,我不能这样做,因为我从一个React组件调用POST,该组件会呈现包含csrf字段和字段的表单。

因此,作为一个超级躲躲闪闪的黑客,我选择进入我的视图,显示消息,并用我友好的“文件太大”消息替换特定的消息。

以下是当文件小于PHP文件大小限制时的工作方式:

如果其他人正在使用Laravel FormRequest类,下面是我在Laravel 5.7上使用的方法:

下面是我设置自定义错误消息和最大文件大小的方法:

我有一个输入字段<input type="file" name="upload">。注意,表单中也需要CSRF令牌(google laravel csrf_field了解这意味着什么)。

代码语言:javascript
运行
复制
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class Upload extends FormRequest
{
  ...
  ...
  public function rules() {
    return [
      'upload' => 'required|file|max:8192',
    ];
  }
  public function messages()
  {
    return [            
      'upload.required' => "You must use the 'Choose file' button to select which file you wish to upload",
      'upload.max' => "Maximum file size to upload is 8MB (8192 KB). If you are uploading a photo, try to reduce its resolution to make it under 8MB"
    ];
  }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37432641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档