Joomla 1.5 Как сделать в компоненте загрузку файлов

Тема в разделе "Создание расширений для Joomla", создана пользователем SIDJoomler, 24.12.2010.

  1. Offline

    SIDJoomler Недавно здесь

    Регистрация:
    13.08.2010
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Пишу свой компонент и потребовалось сделать, чтобы пользователь из админки мог загружать архивы на сайт. Подскажите, пожалуйста, как это можно реализовать.
     
  2.  
  3. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
  4. Offline

    SIDJoomler Недавно здесь

    Регистрация:
    13.08.2010
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо, просто я думал, может в Joomla уже есть какой-нибудь класс для работы загрузками, чтобы велосипед не изобретать. Ну ручками - значит ручками :)
     
  5. Offline

    SIDJoomler Недавно здесь

    Регистрация:
    13.08.2010
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Возникли небольшие проблемы, чтобы "вписать" эту загрузку в MVC архитектуру
    в шаблоне пишу
    Код (CODE):
    1. <input type="file" name="position" id="position" >


    потом в контроллере вызывается задача сохранить
    Код (CODE):
    1. function save()
    2. {
    3.     $model = $this->getModel('positions');
    4.  
    5.     if ($model->store($post)) {
    6.         $msg = JText::_( 'Saved!' );
    7.     } else {
    8.         $msg = JText::_( 'Error Saving' );
    9.     }
    10.         $link = 'index.php?option=com_positions';
    11.     $this->setRedirect($link, $msg);
    12. }


    после уже в моделе загружаю файл
    Код (CODE):
    1. function store()
    2. {
    3.     ....
    4.     if($_FILES["position"]["size"] < 1024*1024*3)
    5.     {
    6.         if (file_exists(JPATH_SITE.DS.'images'.DS.'stories'.DS.'p&r'.DS.$_FILES["position"]["name"]))
    7.             unlink(JPATH_SITE.DS.'images'.DS.'stories'.DS.'p&r'.DS.$_FILES["position"]["name"]);
    8.         move_uploaded_file($_FILES["position"]["name"], JPATH_SITE.DS.'images'.DS.'stories'.DS.'p&r'.DS.$_FILES["position"]["name"]);
    9.  
    10.     }
    11.     else
    12.     {
    13.         $this->setError(JText::_( 'File size too big!' ));
    14.         return false;
    15.     }
    16.         return true;
    17. }

    файл не сохраняется, в чём проблема?
     
    Последнее редактирование: 30.12.2010
  6. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    строчку <form .... > пожалуйста
     
  7. Offline

    SIDJoomler Недавно здесь

    Регистрация:
    13.08.2010
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Код (CODE):
    1. <form action="index.php" method="post" name="adminForm" id="adminForm" enctype="multipart/form-data">
    2. ...
    3. </form>
     
  8. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    хмм.... а скрипт проходит полный цикл или появляются ошибки? что лежит в $_FILES ?
     
  9. Offline

    SIDJoomler Недавно здесь

    Регистрация:
    13.08.2010
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Всем спасибо за ответы, разобрался.
    В строчке
    move_uploaded_file($_FILES["position"]["name"], JPATH_SITE.DS.'images'.DS.'stories'.DS.'p&r'.DS.$_FILES["position"]["name"]);
    вместо $_FILES["position"]["name"] нужно $_FILES["position"]["temp_name"] вставить, т.к. в первом случае передаётся только имя файла с расширением, а во втором - полный путь до него. Это для тех, кто с таким, возможно, столкнётся :)
     
    Последнее редактирование: 11.01.2011
  10. Offline

    botanist специалист

    Регистрация:
    15.02.2009
    Сообщения:
    461
    Симпатии:
    49
    Пол:
    Мужской
  11. Offline

    SIDJoomler Недавно здесь

    Регистрация:
    13.08.2010
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Буду иметь ввиду на будущее :)
     

Поделиться этой страницей

Загрузка...