Вход пользователей
Пользователь:

Пароль:

Запомнить меня



Востановить пароль

Зарегистрироваться
Кто активен
5 пользователь(ей) активно (3 пользователь(ей) просматривают Новости)

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

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

Иногда, при написании модулей, необходимо загружать файлы на сервер. Но как это сделать стандартными средствами 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';

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

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


Теги: example   uploader  
Версия для печати Отправить эту статью другу Создать из статьи PDF-файл
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити