小文件被上传,但在Laravel中没有大文件

2022-08-30 17:58:40

我在控制器中有此操作

    public function upload() {
  // getting all of the post data
  $file = array('image' => Input::file('image'));
  //return $file;
  // setting up rules
  $rules = array('image' => 'required'); //mimes:jpeg,bmp,png and for max size max:10000
  // doing the validation, passing post data, rules and the messages
  $validator = Validator::make($file, $rules);
  if ($validator->fails()) {
    // send back to the page with the input data and errors
   // return Redirect::to('upload')->withInput()->withErrors($validator);
   return "error validation";
  }
  else {
    // checking file is valid.
    if (Input::file('image')->isValid()) {
      $destinationPath = 'myuploads'; // upload path
      $extension = Input::file('image')->getClientOriginalExtension(); // getting image extension
      $fileName = Input::file('image')->getClientOriginalName();
     // $fileName = rand(11111,99999).'.'.$extension; // renameing image
      Input::file('image')->move($destinationPath, $fileName); // uploading file to given path

      return "upload success";
    }
    else {
      // sending back with error message.
      Session::flash('error', 'uploaded file is not valid');
      return "error";
    }
  }
}

它适用于2MB等小文件大小,但不适用于4MB文件大小。对于4MB或更多,它在验证中会出现错误。在上面的代码中有这个代码

 if ($validator->fails()) {

       return "error validation";
      }

它给出了这个自定义错误 。我已经在最大上传限制和发布限制配置php.ini。error validation


答案 1

其他答案是指只说php.ini指导。

我想给出答案,考虑到php.ini和Laravel验证规则

首先检查您的php.ini

对于 和 和 更改为所需的文件大小upload_max_filesizepost_max_size

upload_max_filesize = 100M
post_max_size = 100M

你将有这样的统治

public static $updaterules = array(
    'uploadedimage' => 'image|max:5000'            
    );

附加信息 :

您应通过以下方式检查图像的文件格式

'uploaded' => 'mimes:jpeg,bmp,png'

在此处阅读有关Laravel验证的更多信息

更新:

由于提问者没有注意到服务器正在使用哪个php.ini文件。我正在相应地更新我的答案,因此对于将来遇到类似问题的人来说,这可能很有用

要查找有关 php 的完整配置.ini服务器当前正在使用的文件。

对于 Linux

php -i | grep php.ini

对于视窗

php -i | find /i "Configuration File"

从 php 文件

<?php
phpinfo();
?>

答案 2

编辑您的文件并设置:php.ini

memory_limit = 32M
upload_max_filesize = 70M
post_max_size = 100M

并重新启动 apache。


推荐