在Laravel中上传小文件但不上传大文件

时间:2015-02-15 18:26:28

标签: php laravel

我在控制器中有这个动作

    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";
      }

它提供此自定义错误error validation。我已经开始配置php.ini以获得最大上传限制和后限制。

6 个答案:

答案 0 :(得分:59)

其他答案仅指php.ini指责。

我想考虑php.ini和Laravel Validation Rule

给出答案

首先检查您的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 validation here

更新:

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

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

对于Linux

php -i | grep php.ini

适用于Windows

php -i | find /i "Configuration File"

来自php文件

即,

<?php
phpinfo();
?>

答案 1 :(得分:12)

修改您的php.ini文件并设置:

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

并重新启动apache。

答案 2 :(得分:8)

我找到了答案,上面提到的在php.ini中对upload_max_filesizepost_max_size进行更改的事情实际上是解决问题所提问题的唯一方法。

唯一的问题是我正在使用wamp并且显然wamp在php文件夹中有一个php.ini文件,在apache文件夹中有一个。当应该对apache文件夹中的一个进行更改时,我在PHP文件夹中进行了更改。

答案 3 :(得分:0)

检查max_file_uploads中的max_post_sizephp.ini。它显示自phpinfo()

答案 4 :(得分:0)

FOR WAMP SERVER: 转到Description description = new Description(); description.setText(""); mChart.setDescription(description); 并打开/wamp64/bin/apache/apache(your version)/bin/ 并改变 根据您的需要php.symlink(.ini)。 并重新启动wamp服务器

答案 5 :(得分:0)

对于在nginx上运行的laravel应用。.

  1. 标识您的php ini文件:

      

    php -i | grep php.ini

  2. 编辑cli和fpm文件以确保:

      

    vim /etc/php/7.2/cli/php.ini

         

    vim /etc/php/7.2/fpm/php.ini

  3. 将这些更改为您的首选限制:

      

    post_max_size = 1G

         

    upload_max_filesize = 1G

         

    memory_limit = 1G

  4. 重新启动php fpm

      

    服务php7.2-fpm重新启动

  5. 重新加载nginx

      

    服务nginx重新加载