Проверка размера файла в форме загрузки файла в Joomla 4

  1. Введение в валидацию формы загрузки файла в Joomla 4
  2. Проверка размера файла, который пытается загрузить пользователь на сайт с CMS Joomla 4
  3. Javascript
  4. Результат проверки размера файла, который пытается загрузить пользователь на сайт с CMS Joomla 4

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Введение в валидацию формы загрузки файла в Joomla 4

Этот совет описывает проверку размера загрузки файлов для компонентов CMS Joomla 4, отличных от com_media. Соответствующий элемент формы в форме редактирования из приведенного ниже кода выглядит следующим образом:

Введение в валидацию формы загрузки файла в Joomla 4

Максимальный размер загружаемого файла может быть установлен средой хостинга, см. $upload_mb ниже, или вручную установлен произвольный предел, скажем, 1 Мб.

Проверка размера файла, который пытается загрузить пользователь на сайт с CMS Joomla 4

Следующий код находится в верхней части формы edit.php. Файл camp_infosheet - это файл JavaScript, содержащий код проверки, см. Ниже:

/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $this->document->getWebAssetManager();
$wa->useScript('keepalive')
->useScript('form.validate')
->useScript('com_mycomponent.camp_infosheet');

$max_upload = (int)(ini_get('upload_max_filesize'));
$max_post = (int)(ini_get('post_max_size'));
$memory_limit = (int)(ini_get('memory_limit'));
$upload_mb = min($max_upload, $max_post, $memory_limit);

$doc = Factory::getDocument();
$doc->addScriptDeclaration("
	var infosheet_size_max = '{$max_upload}';
");

И следующий код идет в теле edit.php файла. Обратите внимание на пользовательский класс validate-infosheet_size, используемый для запуска проверки:

				<div class="controls">
					<input
						type="file"
						name="jform[infosheet]"
						id="jform_infosheet"
						class="form-control w20rem required validate-infosheet_size"
						accept="text/plain,application/msword,text/rtf,application/pdf,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.oasis.opendocument.text"
					/><br>
					Максимальный размер загрузки: <strong><?php echo $max_upload; ?>Mb</strong>
				</div>

Javascript

Это содержимое файла JavaScript сценария проверки:

document.addEventListener('DOMContentLoaded', (event) => {
	document.formvalidator.setHandler('infosheet_size', function(value) {
		return infosheet_size();
	});
});

function infosheet_size () {
	var infosheet = document.getElementById('jform_infosheet');
	if (infosheet.files.length == 0) {
		return false;
	}
	// проверка размера файла
	var size = infosheet.files[0].size;
	if (size > (infosheet_size_max * 1024 * 1024)) {
		alert('Этот файл больше допустимого! Размер = ' + size);
		return false;
	}
	return true;
}

Результат проверки размера файла, который пытается загрузить пользователь на сайт с CMS Joomla 4

Для проверки работы предложенного решения выберите файл размером более 2 МБ и попробуйте его загрузить на сайт с CMS Joomla 4, и появится диалоговое окно предупреждения, а затем это:

выберите файл размером более 2 МБ и попробуйте его загрузить на сайт с CMS Joomla 4

Текстовые константы для отображения на языке вашей локации проставьте самостоятельно. ;)

Перевод документации с английского:
https://docs.joomla.org/Joomla_4_Tips_and_Tricks:_Form_Validation_File_Size

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню