验证由Lajvel

时间:2018-06-12 03:10:58

标签: php laravel

我想在 laravel 中验证 AJAX 上传的文件,这是我控制器中的代码:

public function changePicture(Request $request)
{
     // get file : 
     $file = $request->file('image');

     $validator = Validator::make($request->all(), [
         'image' => 'image|mimes:jpg,jpeg,gif,png|max:2048'
     ]);

     if ($validator->fails())
          return response()->json(['is' => 'failed', 'error' => $validator->getMessageBag()]);

     return response()->json(['is'=>'success']);
}

但上传错误文件时没有任何反应,但上传有效文件时,请获取第二个回复:

  

是:成功。

我的 js 代码:

 $.ajax(
        {
            url: '/profile/change-picture',
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },
            type: 'POST',
            data: formData,
            mimeType: 'multipart/form-data',
            contentType: false,
            cache: false,
            processData: false,
            success: function (response){
                if(response.is === 'failed'){
                        $('.ui.modal').modal('show');
                }
            }
        });

但等待后出现错误:

  

POST内容长度20315736字节超过了8388608字节的限制。

任何想法!!的感谢

3 个答案:

答案 0 :(得分:1)

将这些道具添加到你的ajax:

jQuery.ajax({
    ...
    contentType: false,
    processData: false,

另外,请确保将文件附加到表单数据中。有很多方法可以做到这一点,这里有一个:

var data = new FormData();

jQuery.each(jQuery('#image')[0].files, function(index, file) {
    data.append('my-image-' + index, file);
});

关于错误

您的网络服务器或PHP可能具有最大上传文件大小。我建议使用低于该值的文件进行测试。

答案 1 :(得分:1)

您所做的一切都是真的,只有您跳过 8M

8388608bytes 8M ,这是PHP中的默认限制。将php.ini中的 post_max_size 更新为更大的值。

post_max_size upload_max_filesize 是您可以设置的指令,用于配置php.ini文件或.htaccess文件或httpd.conf文件。

php.ini示例:

post_max_size=15M
upload_max_filesize=15M

.htaccess示例:

php_value post_max_size=15M
php_value upload_max_filesize=15M

httpd.conf示例:

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    DocumentRoot /var/www/html/example/
    ErrorLog /var/log/httpd/error.log
    <Directory /var/www/html/example/>
      AllowOverride None
      <IfModule mod_php5.c>
        php_value post_max_size=15M
        php_value upload_max_filesize=15M
      </IfModule>
    </Directory>
</VirtualHost>

答案 2 :(得分:0)

8388608字节是8M,PHP中的默认限制。将php.ini中的post_max_size更新为更大的值。

upload_max_filesize设置用户可以上传的最大文件大小,而post_max_size设置可以通过表单中的POST发送的最大数据量。

因此,您可以将upload_max_filesize设置为1 meg,这意味着用户可以上传的最大单个文件是1兆字节,但如果post_max_size设置为5,他们可以一次上传其中的5个。