Максимальный размер загрузки Laravel

Мой сайт размещен на общем сервере. Максимальный лимит загрузки составляет 5 МБ. Все проверки и выгрузка файлов работают нормально, если загруженный файл меньше 5 МБ. Но когда загружается файл размером более 5 МБ, я вижу это
введите описание изображения здесь.
Как я могу проверить или заставить файл быть под лимитом загрузки с сервера?

6

Решение

Вы, кажется, не заинтересованы в изменении ограничений PHP, чтобы разрешить файлы большего размера. Мне кажется, вы хотите, чтобы максимальная загрузка составляла 5 МБ, и возвращаете правильный ответ, если он закончился.

Вы можете справиться с FileException исключение внутри вашего обработчика исключений в app/Exceptions/Handler.php, Обновите render способ добавить в код, который вам нужен. Например, если вы хотите вернуть исключение проверки, вам нужно будет обработать проверку в обработчике исключений для FileException исключение.

public function render($request, Exception $exception)
{
if ($exception instanceof \Symfony\Component\HttpFoundation\File\Exception\FileException) {
// create a validator and validate to throw a new ValidationException
return Validator::make($request->all(), [
'your_file_input' => 'required|file|size:5000',
])->validate();
}

return parent::render($request, $exception);
}

Это не проверено, но должно дать вам общее представление.

Вы также можете выполнить проверку на стороне клиента с помощью javascript, чтобы слишком большой файл никогда не отправлялся на ваш сервер, но javascript может быть отключен или удален клиентом, поэтому было бы неплохо настроить хорошую обработку на стороне сервера. ,

Для проверки на стороне клиента, если вы присоединяете обработчик события к событию «change» для ввода файла, вы можете проверить размер файла, используя this.files[0].sizeи после этого выполните любые дополнительные действия (отключите форму, удалите загруженный файл и т. д.)

5

Другие решения

$validator = Validator::make($request->all(), [
'file' => 'max:5120', //5MB
]);

в вашем контроллере

и в php.ini

upload_max_filesize = 10MB
5

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>
4

Вы можете использовать правила проверки Laravel:

 'image_file_input_name' => 'required|mimes:jpeg,bmp,png|size:5000',

Размер: значение

Проверяемое поле должно иметь размер, соответствующий заданному значению.
Для строковых данных значение соответствует количеству символов. За
числовые данные, значение соответствует заданному целочисленному значению. Для
массив, размер соответствует количеству массива. Для файлов, размер
соответствует размеру файла в килобайтах.

Вы можете прочитать больше о проверке и ее использовании.

2

Ограничение в 5 мегабайт устанавливается вашим веб-хостом и, вероятно, не может быть изменено.

Для загрузки файлов, размер которых превышает лимит, вам придется загружать его по частям.

Пакет Laravel, который делает это: https://github.com/jildertmiedema/laravel-plupload

0

Вы можете проверить размер вашего файла по Максимум валидатор

'file' => 'required|max:5128'; // max file size: 5M
0

В Laravel вы можете проверить, как это —

$validator = Validator::make($request->all(), [
'file' => 'max:5120',
]);

Значение в килобайтах. то есть максимум: 10240 = максимум 10 МБ.
И в JQuery —

привязывает к событию onchange вашего поля ввода

$('#upFile').bind('change', function() {

//this.files[0].size         gets the size of your file and then you can validate accourdingly...
alert(this.files[0].size);

});

Надеюсь, что это поможет вам.

0

Вы можете сделать это с помощью jQuery / javascript (что означает, что файл не будет загружен, но вы можете проверить файл, прежде чем он будет отправлен в ваш скрипт PHP)

$('#myFile').bind('change', function() {
let filesize = this.files[0].size // On older browsers this can return NULL.
let filesizeMB = (filesize / (1024*1024)).toFixed(2);

if(filesizeMB <= 5) {
// Allow the form to be submitted here.
} else {
// Don't allow submission of the form here.
}

});

Но всегда делайте проверку на стороне сервера в любом случае. Если вы перейдете на более сильный веб-сайт и по-прежнему хотите, чтобы ваш веб-сайт работал без каких-либо изысков.

$validator = Validator::make($request->all(), [
'file' => 'max:5120', //5MB
]);

Все это не проверено, но должно работать.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector