Перейти к содержанию

Квота на вес одного файла при загрузке 4.6.5


Рекомендуемые сообщения

Здравствуйте. В админке есть параметр задающий квоту на общий вес контента в одном сообщении (размер в килобайтах). Например на группу Members задана квота в 10 мб (на пост). Это значит, что участник этой группы может в одном сообщении прикрепить 10 файлов по 1мб или 1 файл весом в 10 мб. С этим понятно. Но!

Как сделать ограничение на вес каждого файла? Чтобы человек не мог прикрепить файл (любой) весом более 1мб, но при этом мог загрузить сколько угодно файлов до 1мб в один пост.

Есть ли хук, плагин или настройках внутри кода где-то?

Ссылка на комментарий
Поделиться на другие сайты

Поставьте группе безлимитный общий объем дискового пространства, и ограничьте ему максимальный объем дискового пространства на единицу контента.

Это все есть в настройках группы, в разделе Контент.

Ссылка на комментарий
Поделиться на другие сайты

36 минут назад, ryancoolround сказал:

и ограничьте ему максимальный объем дискового пространства на единицу контента.

Но это не работает. Если я поставлю ограничение на единицу контента, например, 500кб, то человек не сможет загрузить в одно сообщение несколько файлов размером по 450кб, так как общий их вес будет превышать 500к.

Вот пример установки параметров:

008.jpg.18f06fa35f9ddcb1004df1cb06235aa4.jpg

А вот ошибка, которая выдается, если попытаться превысить лимит:

009.jpg.ca3a1251e32dfbeacb3633964a860ec1.jpg

Мне нужно, чтобы человек не мог загрузить файл весом более 500кб, но при этом он мог в одно сообщение загрузить сколько угодно файлов до 500кб.

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Опытные программисты подсказали решение. Оказывается в движке уже есть этот функционал, но он был отключен. Чтобы его снова включить нужно в FTP найти файл

/system/Helpers/Form/Upload.php

Затем в этом файле найти условие:

if ( $maxChunkSize = static::maxChunkSize() )
{
   $this->maxChunkSize = $maxChunkSize / 1048576;
}

И заменить его на:

if ( $maxChunkSize = static::maxChunkSize() )
{
   $this->maxChunkSize = $maxChunkSize / 1048576;
   $options['maxFileSize'] = 0.5;
}

Цифра 0.5 означает 500кб. Таким образом никто не сможет загрузить каждый конкретный файл весом более 500кб.

Если нужно, чтобы Администраторы могли загружать файлы любого веса, а ограничения действовали только для обычных пользователей, то тогда заменить код на этот:

if ( $maxChunkSize = static::maxChunkSize() )
		{
			$this->maxChunkSize = $maxChunkSize / 1048576;
			$options['maxFileSize'] = 0.5;/* стандартный вес файла*/
			if (\IPS\Member::loggedIn()->member_group_id === 4){
				$options['maxFileSize'] = 10;/*привелегия для группы админов*/
			}
		}

Цифра 4 - это номер Группы. А цифра 10 - это ограничение для Админов.

Надеюсь кому-нибудь пригодиться. 🙂

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...