在ValidatePostSize.php第22行laravel中的PostTooLargeException

时间:2017-02-02 11:45:47

标签: php laravel laravel-5.3

我正在尝试上传包含图片的表单。当我提交它。它显示此错误

PostTooLargeException in ValidatePostSize.php line 22:

如何解决此问题?

2 个答案:

答案 0 :(得分:11)

检查php.ini文件中的以下参数。

我曾多次遇到此问题,通常是因为默认情况下max_file_size设置为2M。

  • MAX_FILE_SIZE
  • 的upload_max_filesize
  • 的post_max_size

**编辑 我被问到如何在将文件发送到PHP之前使用Laravel中的validate方法验证文件大小,并向用户警告大文件。你可以这样做:

<强> 1。为屏幕创建错误提醒 这就是我的样子。我使用bootstrap 3风格。将这样的内容添加到您的布局中(只有在出现错误时才会显示)。

    @if (count($errors) > 0)
        <div class="alert alert-danger">
            <strong>Whoops!</strong> There were some problems with your input.<br><br> 
                <ul>
                    @foreach ($errors->all() as $error)
                        <li>{{ $error }}</li>
                    @endforeach
                </ul>
        </div>
@endif

<强> 2。在预先确定的验证类中确定您将使用的验证器 ** 转到您的项目/ Resources / lang / en / validators.php您将在laravel中找到所有可用的验证。你会看到他们在那里有这个:

'max'                  => [
    'numeric' => 'The :attribute may not be greater than :max.',
    'file'    => 'The :attribute may not be greater than :max kilobytes.',
    'string'  => 'The :attribute may not be greater than :max characters.',
    'array'   => 'The :attribute may not have more than :max items.',
],

这是我用来检查文件大小的验证规则。

** 4。创建您的请求文件**

php artisan make:request yourRequest

** 5。更新您的请求文件** 转到yourProject / app / Http / Requests / yourRequest.php并在规则方法'file_name'=&gt;中添加以下内容: 'max:10'更新10到你的限制值,以千字节为单位:

    public function rules()
    {
        return [ 'profile_pic' => 'required|image|mimes:jpg|max:10',
        ];
    }

<强> 6。使用请求文件管理规则时发出请求。 因此,在这种情况下,我们将其命名为yourRequest,因此您的保存方法将具有:

public function upload(Requests\yourRequest $request)

还要确保您的Controller使用其中的请求类,如下所示:

use App\Http\Requests;

如果您按照此操作,则会出现如下错误: enter image description here

另一个选项是使用Image类缩小文件(如果是图像)。

答案 1 :(得分:2)

您应该在上传文件中使用客户端验证,如果有多个文件要上传选项,您应该通过javascript或逐个插入数据

示例代码:

 $(document).on("change", "#imageUploader", function(e) {
      if(this.files[0].size > 7244183)
      {
        alert("The file size is too larage"); 
        document.getElementById('#imageUploader').value = "";
      }
});