1

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

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

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

Поделиться

2

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

Что скажете про это: (Please log in or register to see this URL) ?

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

Поделиться

3

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

hcs пишет:

Что скажете про это: (Please log in or register to see this URL) ?

нормальный класс, давно использую везде, даже в 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: (Please log in or register to see this URL)

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

Поделиться

5

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

Переработал на скорую руку upload.php из codeigniter, чтобы он получился самодостаточен и поддерживал мультизагрузку, получился такой вот класс:
(Please log in or register to see this URL)
Работает так же как стандартный ((Please log in or register to see this URL)), только дополнительно  появился метод (Please log in or register to see this URL)
Пример обработки загрузки одного файла, прикрепленного в 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 меня устраивает

(Please log in or register to see this URL) | Перед созданием темы => (Please log in or register to see this URL) | (Please log in or register to see this URL)

Сайт KANekT

Поделиться

8

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

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

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

Поделиться

9

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

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

Поделиться