Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Мод загрузки в ревизии 36 отлично работает
Теперь думаю, что же там нужно изменить в коде, чтоб можно было как и для превьюшек указывать максимальный размер основных картинок в пикселях и качество сжатия jpeg.
А то и превьюшки получаются "тяжелые" со 100% качеством. И основные картинки так и сохраняются несколькомегабайтными, без сжатия. Так никакого места на HDD не хватит
Многие посетители форумов не умеют сжимать изображения перед загрузкой, так что просить их об этом бесполезно...
Может есть у кого идеи как это реализовать на примере других CMS, где есть функция сжатия изображений при их загрузке?
Редактировался Member (2011-02-14 10:10:39)
Offline
Member, ставишь ограничение на объем загружаемых файлов и все
А по делу:
Привьюшки толстые, потому что они в png пишутся.
Можно сделать, чтобы все изображения пережимались в один формат.
А вот стоит ли менять размер загруженных изображений, это вопрос!
Ограничение на ширину и высоту загружаемых картинок можно добавить.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
С превьюшками вроде проблему решил.
Нужно в upfiles.php поменять
imagepng($idest, PUN_ROOT.$dir.'mini_'.$fichier);
на
imagejpeg($idest, PUN_ROOT.$dir.'mini_'.$fichier, 70);
а
imagepng($image, PUN_ROOT.$dir.'mini_'.$fichier);
на
imagejpeg($image, PUN_ROOT.$dir.'mini_'.$fichier, 70);
и в файле AP_Upload.php поменять
imagepng($idest, PUN_ROOT.$miniature);
на
imagejpeg($idest, PUN_ROOT.$miniature, 70);
а
imagepng($image, PUN_ROOT.$miniature);
на
imagejpeg($image, PUN_ROOT.$miniature, 70);
Эти нехитрые манипуляции позволили уменьшить вес превьюшек в 5 раз при особо не отличимом от png-аналогов качестве изображения. Единственный глюк в этом способе, у png и gif файлов прозрачные участки изображений на превьюшках становятся черными. Но, учитывая, что обычно у 99% загружаемых картинок прозрачных участков нет, то это не очень страшно.
А вот с уменьшением основного изображения все сложнее. Даже не знаю как к этому подступиться
Редактировался Member (2011-02-13 22:29:25)
Offline
Попробовал вот так. В файле upfiles.php перед
// Создание привьюшки (только для поддерживаемых GD форматов)
вставил вот это:
// Создание уменьшенного оригинала изображения (только для поддерживаемых GD форматов)
if ($isimg2 && array_key_exists($ext_ml[1],$extimageGD))
{
$icfunc = "imagecreatefrom".$extimageGD[$ext_ml[1]];
if (function_exists($icfunc))
{
$image = @$icfunc(PUN_ROOT.$dir.$fichier);
if (isset($image) && !empty($image))
{
$height = 800; //высота в пикселях уменьшенного основного изображения
if ($size[1] > $height)
{
$width = round($size[0] * $height / $size[1]);
$idest = imagecreatetruecolor($width, $height);
imagecopyresampled($idest, $image, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
imagejpeg($idest, PUN_ROOT.$dir.''.$fichier, 70);
}
else
imagejpeg($image, PUN_ROOT.$dir.$fichier, 70);
@chmod(PUN_ROOT.$dir.$fichier, 0644);
}
}
}
Основное оптимизированное изображение стало нормально создаваться и замещать тяжелый оригинал. Но превьюшки стало корежить
Где-то функция создания превьюшек конфликтует с этим кодом...
Offline
Member, просто надо было привьюшку делать из загруженного изображения и только потом пережимать оригинал
З.Ы. Тему переименовываю в MOD: Upload mod, т.к. к Uploadile наше обсуждение не относится (код там совершенно другой).
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Добавлю в плагин (через некотрое время) такую вещь:
Пережимать картинки весом больше *** байт в качество ** %.
Делать картинки по размеру не более *** точек в ширину и *** точек в высоту.
Качество превьюшек ** %.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Offline
Народ, как правильно на инглише написать:
Для картинки весом больше *** байт:
Установить качество ** %
Сделать размер не более *** точке в ширину и *** точек в высоту.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Member, по поводу непрозрачных превьюшек png.
Они и при использовании ф-ии imagepng непрозрачные у меня выходят
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Я почему-то думал, что функция imagepng нормально работает с прозрачностью, хоть и не проверял это.
Вообще, это может быть критично только для каких-нибудь дизайнерских или фотошопных форумов. На обычных форумах к сообщениям прикрепляют обычные фотки, на которых прозрачных участков нет.
Так что, пофик
Offline
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Выложил мод отдельно http://fluxbb.org/resources/mods/upload-mod/
Админы не имеют ограничений по объему загружаемых файлов (ограничено настройками сервера/PHP).
Пользователи с правами модератора имеют свою настройку, простые пользователи - свою.
Можно задать расширения разрешенных к загрузке файлов. Флэш разрешать не рекомендую!!!
Строго запрещены (в коде) файлы с расширениями phtml, php, php3, php4, php5, php6, phps, cgi, exe, pl, asp, aspx, shtml, shtm, fcgi, fpl, jsp, htm, html, wml, htaccess.
Для картинок форматов gif, jpeg, jpg, png, bmp, wbmp, xbm могут создаваться превьюшки (при подключенной в PHP библиотеке GD). Картинки обрабатывает и при наличии библиотеки GD1, хотя в таком случае превьюшки получаются отвратительного качества
Расширение картинки должно соответствовать содержанию, т.е. picе001.jpg с содеражнием png картинки не пройдет
Все файлы после загрузки сканируются на ключевые слова во избежание XSS атак.
Для имен файлов работает транслитерация в латиницу.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Обновил мод на оф.сайте до версии 1.2:
Добавлен француский.
В профиль добавил возможность загрузки/удаления файлов.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
т.е. ты раздаешь права индивидуально, а не через группы? (извини, я совсем отстал от жизни)
а, кажется понял. права вообще не раздаются. в профиле только ссылка на пользовательские файлы
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Offline
artoodetoo, права идут так (с оригинального мода тянется):
админы - без ограничений, модераторы и пользователи - разные объемы.
для всех - одинаковые типы файлов.
в следующей версии сделаю объемы и типы файлов по группам.
З.Ы. в профиле доступ к своим файлам.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
А кто подскажет, в чем может быть причина сообщения - Произошла ошибка во время загрузки и т.д... Обратитись к админку... Попробуйте переупаковать... или что-то такое.
В общем грузит картинки замечательно. А вот файлы... Разрешены zip и rar. Некоторые архивы грузит, а один не хочет.
Я уже и архиватор менял и метод архивирования... одна фигня.
При этом архив совсем мелкий - три файлика php.
Offline
@NeBox, причина в файле upload.php в коде
function isXSSattack ($file)
{
global $lang_up;
// сканируем содержание загруженного файла
$fin = fopen($file, "rb");
if (!$fin)
return $lang_up['err_open'];
$buf1 = '';
while ($buf2 = fread($fin, 4096))
{
if (preg_match( "#<(script|html|head|title|body|table|a\s+href|img\s|plaintext|cross\-domain\-policy|embed|applet|\?php)#si", $buf1.$buf2 ))
{
fclose($fin);
return $lang_up['err_str'];
}
$buf1 = substr($buf2,-30);
}
fclose($fin);
return false;
}
Я таким образом проверяю все файлы на вредоносность.
Можешь проверку отключить у себя. Для этого замени ф-ию на
function isXSSattack ($file)
{
return false;
}
З.Ы. Архиватор 7zip архивирует файлы php так, что они эту проверку проходят.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Обновил мод до версии 1.3.0
Подходит для FluxBB 1.5.0.
Настройки в плагине сделаны для каждой группы отдельно.
Плагин переписан для постраничного администрирования файлов.
Добавлен немецкий язык для мода.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Помогите не работает мод, невозможно залить файл, ссылается на директорию "Permission denied in /home/vhosts/*адрес сайта*/upfiles.php"
Как это исправить ?
Offline
@wst, какие права стоят на файле upfiles.php?
З.Ы. Удали его на сервере и залей по новой.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Права стояли 777
Удалил, залил заново, теперь выдаёт вот что:
Warning: require(/home/vhosts/*адрес сайта*/header.php): failed to open stream: No such file or directory in /home/vhosts/*адрес сайта*/upfiles.php on line 59
Fatal error: require(): Failed opening required '/home/vhosts/*адрес сайта*/header.php' (include_path='.:/usr/share/pear:/usr/share/php') in /home/vhosts/*адрес сайта*/upfiles.php on line 59
Offline
@wst, давай разберемся, что за форум установлен (моя сборка или оригинал с оф сайта)?
И какой файл заливаешь туда повторно (с моей сборки или из мода с оф. сайта)?
Какой версии форум?
Какой версии мод?
З.Ы. Сразу скажу: отдельный мод не подходит к моей сборке и мод из сборки не подходит к оригинальному форуму!!!
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
Установлена ваша сборка, последняя на данный момент - ревизия 51, версия форума 1.5.0
Сначала залил повторно файл с оф сайта, выдало ошибку что постом выше.
Потом залил файл с вашей сборки повторно, сново выдаёт "Permission denied in /home/vhosts/*адрес сайта*/upfiles.php"
Offline
@wst, думаю что проблема не в файле upfiles.php, а в доступе к папке img/members/ или ее подпапке с номером пользователя.
Возможно не хватает прав на запись загруженного файла, а возможно папка юзера не создается.
Смотри логи ошибок сервера.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
проблема не в файле upfiles.php, а в доступе к папке img/members/ или ее подпапке с номером пользователя.
Да проблема была именно в этом. Спасибо вам огромное!
Offline