I have this action in controler
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"; } } }
It works for small file size like 2MB but won't work for 4MB file size. For 4MB or more it gets error in validation.In the code above there's this code
if ($validator->fails()) { return "error validation"; }
It gives this custom error error validation
. I have already worked on configuring php.ini for max upload limit and post limit.
If you want to upload big files you should use streams. Here's the code to do it: $disk = Storage::disk('s3'); $disk->put($targetFile, fopen($sourceFile, 'r+')); PHP will only require a few MB of RAM even if you upload a file of several GB.
By default, PHP file upload size is set to maximum 2MB file on the server, but you can increase or decrease the maximum size of file upload using the PHP configuration file ( php. ini ), this file can be found in different locations on different Linux distributions.
Other answers refers saying only about the php.ini directiress.
I would like to give answer considering both php.ini and the Laravel Validation Rule
First check your php.ini
For the upload_max_filesize
and post_max_size
and change to your desired file size
upload_max_filesize = 100M post_max_size = 100M
You shall have your rule like this
public static $updaterules = array( 'uploadedimage' => 'image|max:5000' );
Additional information :
You shall check for the file format for image by
'uploaded' => 'mimes:jpeg,bmp,png'
Read more about Laravel validation here
As the questioner didn't noticed which php.ini file is being used by the server. I am updating my answer accordingly so it might be useful for someone who has similar problems in future
To find the full configuration about the php.ini file which is currently being used by your server.
For Linux
php -i | grep php.ini
For Windows
php -i | find /i "Configuration File"
From a php file
i.e.,
<?php phpinfo(); ?>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With