Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2011-02-13 19:30:08

Member
Участник
Зарегистрирован: 2011-02-04
Сообщений: 31

[MOD] Upload mod

Мод загрузки в  ревизии 36 отлично работает  smile

Теперь думаю, что же там нужно изменить в коде, чтоб можно было как и для превьюшек указывать максимальный размер основных картинок в пикселях и качество сжатия jpeg.
А то и превьюшки получаются "тяжелые" со 100% качеством. И основные картинки так и сохраняются несколькомегабайтными, без сжатия. Так никакого места на HDD не хватит  sad
Многие посетители форумов не умеют сжимать изображения перед загрузкой, так что просить их об этом бесполезно...

Может есть у кого идеи как это реализовать на примере других CMS, где есть функция сжатия изображений при их загрузке?

Редактировался Member (2011-02-14 10:10:39)

Offline

#2 2011-02-13 19:58:42

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

Member, ставишь ограничение на объем загружаемых файлов и все wink
А по делу:
Привьюшки толстые, потому что они в png пишутся.
Можно сделать, чтобы все изображения пережимались в один формат.
А вот стоит ли менять размер загруженных изображений, это вопрос!
Ограничение на ширину и высоту загружаемых картинок можно добавить.

Offline

#3 2011-02-13 22:20:40

Member
Участник
Зарегистрирован: 2011-02-04
Сообщений: 31

Re: [MOD] Upload mod

С превьюшками вроде проблему решил.

Нужно в 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% загружаемых картинок прозрачных участков нет, то это не очень страшно.

А вот с уменьшением основного изображения все сложнее. Даже не знаю как к этому подступиться  sad

Редактировался Member (2011-02-13 22:29:25)

Offline

#4 2011-02-14 00:00:16

Member
Участник
Зарегистрирован: 2011-02-04
Сообщений: 31

Re: [MOD] Upload mod

Попробовал вот так. В файле 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);
            }
        }
    }

Основное оптимизированное изображение стало нормально создаваться и замещать тяжелый оригинал. Но превьюшки стало корежить  sad
Где-то функция создания превьюшек конфликтует с этим кодом...

Offline

#5 2011-02-14 06:57:09

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

Member, просто надо было привьюшку делать из загруженного изображения и только потом пережимать оригинал wink
З.Ы. Тему переименовываю в MOD: Upload mod, т.к. к Uploadile наше обсуждение не относится (код там совершенно другой).

Offline

#6 2011-02-14 07:03:20

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

Добавлю в плагин (через некотрое время) такую вещь:
Пережимать картинки весом больше *** байт в качество ** %.
Делать картинки по размеру не более *** точек в ширину и *** точек в высоту.
Качество превьюшек ** %.

Offline

#7 2011-02-14 09:26:05

Member
Участник
Зарегистрирован: 2011-02-04
Сообщений: 31

Re: [MOD] Upload mod

Это было бы очень здорово!  smile

Добавьте пожалуйста

Offline

#8 2011-02-15 13:41:05

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

Народ, как правильно на инглише написать:
Для картинки весом больше *** байт:
Установить качество ** %
Сделать размер не более *** точке в ширину и *** точек в высоту.

Offline

#9 2011-02-16 08:48:51

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

Member, по поводу непрозрачных превьюшек png.
Они и при использовании ф-ии imagepng непрозрачные у меня выходят hmm

Offline

#10 2011-02-16 10:36:59

Member
Участник
Зарегистрирован: 2011-02-04
Сообщений: 31

Re: [MOD] Upload mod

Я почему-то думал, что функция imagepng нормально работает с прозрачностью, хоть и не проверял это.

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

Offline

#11 2011-02-17 09:47:50

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

Добавил прозрачность для png и gif, но некоторые gif выдают глюк прозрачности
11eff7e7d422d19038b69c422050d86f.jpg

Offline

#12 2011-02-28 11:36:54

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

Выложил мод отдельно 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, хотя в таком случае превьюшки получаются отвратительного качества wink
Расширение картинки должно соответствовать содержанию, т.е. picе001.jpg с содеражнием png картинки не пройдет  tongue
Все файлы после загрузки сканируются на ключевые слова во избежание XSS атак.
Для имен файлов работает транслитерация в латиницу.

242647bf9a3cdaa4fdcc3a3a955619d2.jpg 54bdf4163a782b04ad8da91b0f800b51.jpg 74d392ec4c2a2583423a30c8063a25b0.jpg 88a8591536af09e7ba1c361bde340fb8.jpg 07be917bb8272438c44707ac96686ed8.jpg cdd376d971ba6a39caf2b974208c2d52.jpg 39badb35916d3b0b55f58cd70fab70af.jpg

Offline

#13 2011-04-08 04:34:13

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

Обновил мод на оф.сайте до версии 1.2:
Добавлен француский.
В профиль добавил возможность загрузки/удаления файлов.

Offline

#14 2011-04-08 10:37:56

artoodetoo
Admin by chance
Зарегистрирован: 2008-09-09
Сообщений: 881
Сайт

Re: [MOD] Upload mod

т.е. ты раздаешь права индивидуально, а не через группы? (извини, я совсем отстал от жизни)

а, кажется понял. права вообще не раздаются. в профиле только ссылка на пользовательские файлы


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Offline

#15 2011-04-08 12:03:21

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

artoodetoo, права идут так (с оригинального мода тянется):
админы - без ограничений, модераторы и пользователи - разные объемы.
для всех - одинаковые типы файлов.

в следующей версии сделаю объемы и типы файлов по группам.

З.Ы. в профиле доступ к своим файлам.

Offline

#16 2011-08-04 10:43:39

NeBox
Участник
Зарегистрирован: 2011-08-03
Сообщений: 1

Re: [MOD] Upload mod

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

В общем грузит картинки замечательно. А вот файлы... Разрешены zip и rar. Некоторые архивы грузит, а один не хочет.
Я уже и архиватор менял и метод архивирования... одна фигня.
При этом архив совсем мелкий - три файлика php.

Offline

#17 2011-08-04 17:28:09

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

@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 так, что они эту проверку проходят.

Offline

#18 2012-08-03 14:45:53

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

Обновил мод до версии 1.3.0
Подходит для FluxBB 1.5.0.
Настройки в плагине сделаны для каждой группы отдельно.
Плагин переписан для постраничного администрирования файлов.
Добавлен немецкий язык для мода.

Offline

#19 2012-08-10 22:18:29

wst
Участник
Зарегистрирован: 2011-09-09
Сообщений: 89

Re: [MOD] Upload mod

Помогите не работает мод, невозможно залить файл, ссылается на директорию    "Permission denied in /home/vhosts/*адрес сайта*/upfiles.php"

Как это исправить ?

Offline

#20 2012-08-11 07:43:08

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

@wst, какие права стоят на файле upfiles.php?
З.Ы. Удали его на сервере и залей по новой.

Offline

#21 2012-08-11 09:06:17

wst
Участник
Зарегистрирован: 2011-09-09
Сообщений: 89

Re: [MOD] Upload mod

Права стояли 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

#22 2012-08-11 10:31:15

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

@wst, давай разберемся, что за форум установлен (моя сборка или оригинал с оф сайта)?
И какой файл заливаешь туда повторно (с моей сборки или из мода с оф. сайта)?
Какой версии форум?
Какой версии мод?
З.Ы. Сразу скажу: отдельный мод не подходит к моей сборке и мод из сборки не подходит к оригинальному форуму!!!

Offline

#23 2012-08-11 13:34:25

wst
Участник
Зарегистрирован: 2011-09-09
Сообщений: 89

Re: [MOD] Upload mod

Установлена ваша сборка, последняя на данный момент - ревизия 51, версия форума 1.5.0

Сначала залил повторно файл с оф сайта, выдало ошибку что постом выше.

Потом залил файл с вашей сборки повторно, сново выдаёт "Permission denied in /home/vhosts/*адрес сайта*/upfiles.php"

Offline

#24 2012-08-11 14:14:19

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,179
Сайт

Re: [MOD] Upload mod

@wst, думаю что проблема не в файле upfiles.php, а в доступе к папке img/members/ или ее подпапке с номером пользователя.
Возможно не хватает прав на запись загруженного файла, а возможно папка юзера не создается.
Смотри логи ошибок сервера.

Offline

#25 2012-08-11 14:41:35

wst
Участник
Зарегистрирован: 2011-09-09
Сообщений: 89

Re: [MOD] Upload mod

Visman пишет:

проблема не в файле upfiles.php, а в доступе к папке img/members/ или ее подпапке с номером пользователя.

Да проблема была именно в этом. Спасибо вам огромное!  cool

Offline

Подвал доски

Под управлением FluxBB. Хостинг Hostens