1

Тема: Стандартная система загрузки файлов

Привет.
Начну издалека.
расширение "картинки форумов" - свой механизм загрузки файлов,
"реклама"  -  еще одни механизм загрузки.
pun_attachments - и в нем тоже механизм загрузки файлов.
"загрузка картинок в сообщение" - тут еще один дубль загрузчика.
"загрузка расширений" - и еще
fancy_upload - еще один загрузчик!
Я перечисли все известные мне расширения, допускаю что есть еще и, вероятно, будут новые.
Очевидно, что нужен стандартный механизм в ядре, который должен решать эту задачу. Он должен быть достаточно гибкий, чтобы удовлетворять любым потребностям.
Предлагаю тут обсудить по-русски возможные варианты, чтобы потом включить это загрузчик в ядро или сделать его отдельным официальным расширением.  Вероятно есть готовые решения, проверенные временем, одно из которых мы можем с успехом перенять.
Есть идеи?

Захочешь — найдешь время, не захочешь — найдешь причину.

Поделиться

2

Re: Стандартная система загрузки файлов

Что скажете про это: http://www.verot.net/php_class_upload.htm ?

Захочешь — найдешь время, не захочешь — найдешь причину.

Поделиться

3

Re: Стандартная система загрузки файлов

hcs пишет:

Что скажете про это: http://www.verot.net/php_class_upload.htm ?

нормальный класс, давно использую везде, даже в hcs_image_uploader переделал создание миниатюры на нем  smile

function IU_make_thumbnail($orig_fname, $thum_fpath, $thum_fname, $thumb_width = 100, $thumb_height = 100) {

    include IU_PATH.'/assets/class.upload.php';
    $up = new upload($orig_fname, 'ru_RU');
    $up->image_resize = true;
    $up->image_x = $thumb_width;
    $up->image_y = $thumb_height;
    $up->image_ratio = true;
    $up->image_ratio_no_zoom_in = true;
    $up->Process($thum_fpath);
    if($up->processed){
    //$up->Clean();
    flush ();
    return true;
    } else return false;
}

Сайт yandrey

Поделиться

4

Re: Стандартная система загрузки файлов

Всёж-таки этот класс больше для операций с картинками, а для начала нужна обёртка над move_uploaded_file, предоставляющая удобное апи: куда положить, как назвать, условия проверки и тп

Добавлено спустя 3 минуты 58 секунд:

Вот кстати неплохой пример в CI - библиотека Upload: https://bitbucket.org/ellislab/codeigni … Upload.php

Захочешь — найдешь время, не захочешь — найдешь причину.

Поделиться

5

Re: Стандартная система загрузки файлов

Переработал на скорую руку upload.php из codeigniter, чтобы он получился самодостаточен и поддерживал мультизагрузку, получился такой вот класс:
http://punbb.ru/downloads/upload.zip
Работает так же как стандартный (http://codeigniter.com/user_guide/libra … ading.html), только дополнительно  появился метод http://code-igniter.ru/wiki/Multi_upload
Пример обработки загрузки одного файла, прикрепленного в file input c name='file_ield':

require_once(FORUM_ROOT.'include/upload.php');
$Uploader = new upload(array(
    'allowed_types'    =>    'gif|jpg|png',
    'encrypt_name'    =>    TRUE,
    'overwrite'        =>    TRUE,
    'xss_clean'        =>    TRUE,
    'upload_path'    =>    FORUM_ROOT.'/images/'
));
$Uploader->do_upload('file_ield');
print_r($Uploader->error_msg);
print_r($Uploader->data();

В примере разрешается загрузка только типов gif|jpg|png, загруженный файл будет помещен в FORUM_ROOT.'/images/', имя файла будет сгенерировано уникальное, при наличии такого-же - перезаписан, будет проведена проверка на атаку  xss, например файл с расширением jpg но с содержимым < script>alert('hi nigga!')< /script> будет отвергнут.
После загрузки данные о загруженном файле доступны через $Uploader->data() или напрямую через свойства (см код)
В классе есть TODO, нужно добавить механизм вывода локализованных ошибок, но работает и без этого, просто ошибки будут вида: upload_no_file_selected
При наличии такого единого механизма задача разработки расширений, использующих загрузку файлов, упрощается и сводится к подготовке условий загрузки, не так ли?

Мнения?

Захочешь — найдешь время, не захочешь — найдешь причину.

Поделиться

6

Re: Стандартная система загрузки файлов

Было бы здорово иметь хороший универсальный загрузчик ...... и чтобы можно было его легко  использовать в других расширениях .....

upload.php из codeigniter может загружать все типы файлов? и может создавать превью нужного размера?
как по поводу защищенности? нужны какие нибудь дополнительные проверки?

Поделиться

7

Re: Стандартная система загрузки файлов

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

codeigniter меня устраивает

PunBB Extensions | Перед созданием темы => ФАК | Профессиональная разработка сложных сайтов

Расширения распространяются по Creative Commons Attribution-NonCommercial 4.0

Сайт KANekT

Поделиться

8

Re: Стандартная система загрузки файлов

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

Захочешь — найдешь время, не захочешь — найдешь причину.

Поделиться

9

Re: Стандартная система загрузки файлов

Странно что обсуждение этой темы закончилось в 2011 году. Скажите появился ли на данный момент какой-либо файловый менеджер. А то установил форум а картинки в темы даже загрузить никак невозможно. Только как прикрепление. Нужно просто загрузить фото и вставить в тему.

Поделиться