Документация
Загрузка файлов на XOOPS сайт
Написал andrey3761 в 29.07.2010 15:30:00 (3685 прочтений)

Иногда, при написании модулей, необходимо загружать файлы на сервер. Но как это сделать стандартными средствами XOOPS? Для этого в XOOPS'е есть клас uploader. В данной статье мы познаковим вас с загрузкой файлов на сервер черзе ядро XOOPS.



Итак начнём, для начала создадим файл example.php. Его содержание такое:

 

include 'mainfile.php';

// Если мы нажали на кнопку "Отправить"
if( isset( $_POST['submit'] ) ) {

// Если мы на кнопку не нажимали, вырисовываем форму
} else {

}

?>

Т.е. файл состоит из двух частей:

1) Обработчик загрузки файлов

2) Форма загрузки файлов

Для начала рассмотрим форму загрузки файла.

// Задание тайтла страницы
$xoopsOption['xoops_pagetitle'] = 'Форма загрузки файла';
// Шаблон
//$xoopsOption['template_main'] = '***.html';
// Заголовок страницы
include $GLOBALS['xoops']->path('header.php');
// Подключаем файл с формами (ОБЯЗЯТАЛЬНО!)
include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
// Создаём объект формы
$sform = new XoopsThemeForm( 'Загрузка файлов', 'addfile', 'example.php', 'post' );
// Устанавливает тип формы (ОБЯЗЯТАЛЬНО!)
$sform->setExtra( 'enctype="multipart/form-data"' );
// Название, и т.д...
$sform->addElement( new XoopsFormText( 'Название:', 'title', 50, 255, ''), true );
// Фома первого файла
$sform->addElement( new XoopsFormFile( 'Первый файл:', 'attachedfile', $maxuploadsize ), true );
// Форма второго файла
$file2 = new XoopsFormFile( 'Второй файл:' , 'attachedimage', $xoopsModuleConfig['maxuploadsize']);
$file2->setDescription( sprintf( 'Максимальные параметры:
размер %s байт
ширина %s пиксель
высота %s пиксель', $maxuploadsize, $maxwidth, $maxheight ) );
$sform->addElement( $file2, false );
unset( $file2 );
 // Кнопка отправить
$button_tray = new XoopsFormElementTray('' ,'');
$button_tray->addElement( new XoopsFormButton('', 'submit', _SUBMIT, 'submit') );
$sform->addElement($button_tray);
// Выводм форму в шаблон (ТОЛЬКО ЕСЛИ БЫЛ УКАЗАН ШАБЛОН!)
//$xoopsTpl->assign('themeForm', $sform->render());
// Выводим форму в браузер (ТОЛЬКО ЕСЛИ НЕ БЫЛ УКАЗАН ШАБЛОН!)
$sform->display();
 // Удаляем объект формы
unset( $sform );

Данный код просто создаёт стандартную страничку XOOPS, и внутри неё вырисовываем форму загрузки файов. Поля могут быть любми и в негораниченных количествах.

Если вы всё сделали правильно, то должна появиться следующая форма.01

Рассмотрим обработчик загрузки файлов:

// Подключаем класс uploader (ОБЯЗАТЕЛЬНО!)
include_once $GLOBALS['xoops']->path('class/uploader.php');

$file1_name = '';
// Если в форме было поле с первым файлом
if( isset( $_POST['xoops_upload_file'][0] ) ) {
    // Имя, под которым фафл будет загружен на сервер
    $destname = 'file1.name';
    // Префикс, который будет дан файлу
    $destprefix = 'prefix';
    // Объявляем класс uploader (ОБЯЗАТЕЛЬНО!)
    $uploader = new XoopsMediaUploader( $uploaddir, $mimetype, $maxuploadsize, NULL, NULL);
    // Пытаемся прочитать файл
    if( $uploader->fetchMedia( $_POST['xoops_upload_file'][0] ) ) {
        // Есла файл был передан и нет ошибок размера и т.д.
        // Устанавливаем имя загруженному файлу (ОПЦИОНАЛЬНО!)
        //$uploader->setTargetFileName( $destname );
        // Устанавливаем префикс имени загруженному файлу (ОПЦИОНАЛЬНО!)
        //$uploader->setPrefix( $destprefix ) ;
        // После всех операций нужно сново перечитать файл
        $uploader->fetchMedia($_POST['xoops_upload_file'][0]);
        // Если мы удачно загрузили файл
        if( $uploader->upload() ) {
            // Получаем имя загруженного файла
            $file1_name = $uploader->getSavedFileName();
        // Если не удалось загрузить файл
        } else {
            // Получаем ошибки, которые произошли во время загрузки файла
            $errors = $uploader->getErrors();
            redirect_header('example.php', 3, $errors);
        }
    // Если не удалось прочитать файл
    } else {
        $errors = $uploader->getErrors();
        redirect_header('example.php', 3, $errors);
    }
} else {
    // если небыло поля с файлом
    redirect_header( 'example.php', 3, 'Вы не выбрали файл' );
}

$file2_name = '';
// Если в форме было поле с первым файлом
if( isset( $_POST['xoops_upload_file'][1] ) ) {
    // Имя, под которым фафл будет загружен на сервер
    $destname = 'file2.name';
    // Префикс, который будет дан файлу
    $destprefix = 'prefix';
    // Объявляем класс uploader (ОБЯЗАТЕЛЬНО!)
    $uploader = new XoopsMediaUploader( $uploaddir, $mimetype, $maxuploadsize, $maxwidth, $maxheight);
    // Пытаемся прочитать файл
    if( $uploader->fetchMedia( $_POST['xoops_upload_file'][1] ) ) {
        // Есла файл был передан и нет ошибок размера и т.д.
        // Устанавливаем имя загруженному файлу (ОПЦИОНАЛЬНО!)
        //$uploader->setTargetFileName( $destname );
        // Устанавливаем префикс имени загруженному файлу (ОПЦИОНАЛЬНО!)
        //$uploader->setPrefix( $destprefix ) ;
        // После всех операций нужно сново перечитать файл
        $uploader->fetchMedia($_POST['xoops_upload_file'][1]);
        // Если мы удачно загрузили файл
        if( $uploader->upload() ) {
            // Получаем имя загруженного файла
            $file2_name = $uploader->getSavedFileName();
        // Если не удалось загрузить файл
        } else {
            // Получаем ошибки, которые произошли во время загрузки файла
            $errors = $uploader->getErrors();
            redirect_header('example.php', 3, $errors);
        }
    // Если не удалось прочитать файл
    }
}
$message = '';
$message .= 'Загрузка фйлов';
if( $file1_name ) $message .= ' ' . $file1_name . ',';
if( $file2_name ) $message .= ' ' . $file2_name . ',';
$message .= ' успешно завершена.';

redirect_header('example.php', 3, $message);

Комментарии говорят обо всём. В конце выйдет сообщение об удачной загрузке или ошибки:

02

Единственное, мы ещё не указали настройки, в какую папку загружать, какая высота картинок и т.д. Это нужно вписывать в конфигурацию модуля. В данном примере мы просто впишем её в начале файла:

// Максимальный размер загружаемого файла
$maxuploadsize = 1048576;
// Максимальная ширина загружаемого изображения
$maxwidth = 1024;
// Максимальная высота загружаемого изображения
$maxheight = 1024;
// Папка для загузки
$uploaddir = 'E:/tmp';
// Массив разрешённых для загрузки mime-типов
$mimetype = array();
$mimetype[] = 'image/gif';
$mimetype[] = 'image/jpeg';
$mimetype[] = 'image/pjpeg';
$mimetype[] = 'image/x-png';
$mimetype[] = 'image/png';

Скачать исходный текст примера вы можете по ссылке ниже.

Скачать исходники.


Теги: uploader   example  
Версия для печати Отправить эту статью другу Создать из статьи PDF-файл

Похожие новости

Вывод в теме блока по ID

Иногда необходимо вывести в теме или шаблоне любой блок. Но стандартными средствами этого не сделать. Для этих целей есть специальный плагин...

Установка модуля news

В этой статье расскажем, как установить модуль News, как добавить разделы, статьи...

Быстрая установка XOOPS на компьютер

Для обучения работы с XOOPS его рекомендуется установить на виртуальный сервер. Ниже будет рассказано, как установить XOOPS на Денвер, который мы установили ранее.

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити
Syndel
 Re: Загрузка файлов на XOOPS сайт
Новичок
Дата регистрации: 23.11.2010
От: Москва
Сообщений: 1
Отправлено: 23.11.2010 9:47  Обновлено: 23.11.2010 15:01
спасибо, вроде получилось
andrey3761
 Re: Загрузка файлов на XOOPS сайт
Web-мастер
Дата регистрации: 07.01.2010
От: Transnistrian
Сообщений: 59
Отправлено: 29.11.2010 8:18  Обновлено: 29.11.2010 8:18
Всегда пожалуйста.
Планируем пополнять список классов XOOPS...

Кто активен

19 пользователь(ей) активно (6 пользователь(ей) просматривают Новости)

Участников: 0
Гостей: 19

далее...

Рекомендуем