Jump to content

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

Featured Replies

Posted
comment_170887

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

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

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

comment_170895

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

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

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

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

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

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

008.jpg.18f06fa35f9ddcb1004df1cb06235aa4.jpg

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

009.jpg.ca3a1251e32dfbeacb3633964a860ec1.jpg

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

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

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.