проверить файл, загруженный ajax в Laravel - PullRequest
0 голосов
/ 12 июня 2018

Я хочу проверить файл, загруженный AJAX в laravel , это мой код в моем контроллере:

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']);
}

, но ничего не происходит при загрузкеневерный файл, но при загрузке действительного файла получите второй ответ:

is: success.

my 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 Content-Length в 20315736 байт превышает ограничение в 8388608 байт.

любая идея !! спасибо

Ответы [ 3 ]

0 голосов
/ 12 июня 2018

8388608 байт - 8 МБ, ограничение по умолчанию в PHP.Обновите значение post_max_size в php.ini до большего значения.

upload_max_filesize устанавливает максимальный размер файла, который пользователь может загрузить, в то время как post_max_size устанавливает максимальный объем данных, которые можно отправить через POST в форме.

Таким образом, вы можете установить upload_max_filesize равным 1 мегабайту, что будет означать, что самый большой отдельный файл, который может загрузить пользователь, составляет 1 мегабайт, но они могут загрузить 5 из них одновременно, если для post_max_size было установлено значение 5.

0 голосов
/ 12 июня 2018

Все, что вы сделали, правда, Только вы пропустили 8M .

8388608байт - это 8M , ограничение по умолчанию в PHP.Обновите post_max_size в php.ini до большего значения.

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>
0 голосов
/ 12 июня 2018

Добавьте эти реквизиты к вашему 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, вероятно, имеет максимальный размер загружаемого файла.Я предлагаю провести тестирование с файлом ниже этого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...