Загрузка файлы пользователем.

Любая помощь по установке/настройке/модификации concrete5

Загрузка файлы пользователем.

Сообщение sergio11ofpp » 05 июл 2013, 12:12 ,  »  Сообщение:#1

Добрый день нашёл ваш Форум!
Я делаю форму при которой юзер если зарегестрированный создаёт страницу с определёными аттрибутами которые уже созданные(всё делаетс с Ajax + php)
Код: Выделить всё
$dt = Loader::helper('form/date_time'); //Время
$ct = CollectionType::getByHandle('Products'); //выбор Page type
// и массив того что вставлять в новую страницу.
$data = array();
$data['uID'] = 1;
$data['pkgID'] = 0;
$data['cName'] = 'Новая страница';
 $data['cHandle'] = 'novaya_stranica';
 $data['cDatePublic'] = $dt->translate('cDatePublic');


Так потом создаю саму страницу
Код: Выделить всё
$page  = Page::getByPath('/'); //путь рдителя под какую страницу вставлять
$newpage = $page->add($ct, $data); //и сама страница


Далее сразу я присваю ей аттрибуты
Код: Выделить всё
$newpage->setAttribute('city', 'New Yok');
$newpage->setAttribute('category', 'Продукт');


Всё работает всё хорошо моя проблема в том что при добавление мне надо загружать ещё картинку вот тут то и проблема
нашёл вот это
Код: Выделить всё
Loader::library("file/importer");
$fi = new FileImporter();
$newFile = $fi->import($logo_img , 'asd');


Но что то не пашет естьк акие то предложения??? Извините если повторяюсь или не там создал тему! Спасибо!
sergio11ofpp
 
Сообщения: 53
Зарегистрирован: 05 июл 2013, 12:00

Re: Загрузка файлы пользователем.

Сообщение cmsservice » 05 июл 2013, 14:44 ,  »  Сообщение:#2

Загружать картинку куда, на сервер просто или уже имеющуюся на сервере в модуль/атрибут какой-то?
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: Загрузка файлы пользователем.

Сообщение sergio11ofpp » 05 июл 2013, 15:01 ,  »  Сообщение:#3

Сначала загрузить в Filemanager а потом присвоить к атрибуту Страницы
sergio11ofpp
 
Сообщения: 53
Зарегистрирован: 05 июл 2013, 12:00

Re: Загрузка файлы пользователем.

Сообщение cmsservice » 05 июл 2013, 17:12 ,  »  Сообщение:#4

С загрузкой мы поступаем вот так:

Код: Выделить всё
if(isset($_FILES['importfile']['tmp_name']) || !is_uploaded_file($_FILES['importfile']['tmp_name'])) {
   $fi = new FileImporter();
   $uploaded = $fi->import($_FILES['importfile']['tmp_name'], $_FILES['importfile']['name']);
   if (!($uploaded instanceof FileVersion)) {
      switch($uploaded) {
      case FileImporter::E_FILE_INVALID_EXTENSION:
         $msg = 'Недопустимый тип файла.';
         break;
      case FileImporter::E_FILE_INVALID:
         $msg = 'Неудачная загрузка файла.';
         break;
      }
   }
}


ну а в атрибут просто присваиваете fID загруженного файла и он там. Понятно, что атрибут должен быть типа Файл :)
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: Загрузка файлы пользователем.

Сообщение sergio11ofpp » 05 июл 2013, 17:59 ,  »  Сообщение:#5

Спасибо огромное можешь только одну вещ объяснить:
Это немного не Concrete5 а о PHP
['importfile']['tmp_name'] <---Что сюда вставлять
importfile это velue ы <input type="file" >???(напрмер я выбрал файл value стало C:/fakepath/1.png
или как то наоборот??
sergio11ofpp
 
Сообщения: 53
Зарегистрирован: 05 июл 2013, 12:00

Re: Загрузка файлы пользователем.

Сообщение cmsservice » 05 июл 2013, 18:05 ,  »  Сообщение:#6

'importfile' - имя поля типа файл в Вашей форме. Т.е. у Вас оно может быть другим. И да, не забываем прописывать у формы enctype правильный иначе файл не будет загружен на сервер.

Подробнее тут
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку
и еще много где, если набрать в поиске что-то типа "загрузка файлов на сервер средствами PHP"
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: Загрузка файлы пользователем.

Сообщение sergio11ofpp » 05 июл 2013, 18:54 ,  »  Сообщение:#7

У меня просто немного подргому:
Я не использую форму action Сделал с Ajax ищу по всему инету предлогают плагины просто если честно вот не понимаю когда выбрал файл и нажимаю сабмит
Что передавать PHP пытлася передать value от Input
Код: Выделить всё
C:/fakepath/1.png
Но тоже ничего.
У меня по клику:
Код: Выделить всё
var logo_img = $("#logo_img").val();

Потом
Код: Выделить всё
var dataString = 'logo_img=' + logo_img + '&page=load_page';
$.ajax({
type: 'POST',
 url: '<?php echo $tools_url_product ; ?>',
 data: dataString,
 beforeSend: function(){
   $('#here').html('loading');
        },
   success: function(response){
      $('#here').fadeIn().html(response);                        
     }
});


А в PHP

Код: Выделить всё
if(isset($_FILES['logo_img']['name']) || !is_uploaded_file($_FILES['logo_img']['name'])) {
            $fi = new FileImporter();
            $uploaded = $fi->import($_FILES['logo_img']['name'], $_FILES['logo_img']['name']);
            if (!($uploaded instanceof FileVersion)) {
               switch($uploaded) {
               case FileImporter::E_FILE_INVALID_EXTENSION:
                  $msg = 'Недопустимый тип файла.';
                  break;
               case FileImporter::E_FILE_INVALID:
                  $msg = 'Неудачная загрузка файла.';
                  break;
               }
            }
         }


Но я так понимаю это не так делается))
sergio11ofpp
 
Сообщения: 53
Зарегистрирован: 05 июл 2013, 12:00

Re: Загрузка файлы пользователем.

Сообщение cmsservice » 05 июл 2013, 21:43 ,  »  Сообщение:#8

Понятно. Так не будет работать, путь который Вы тягаете из контрола это просто строка, а при отправке формы происходит взаимодействие браузера с веб-сервером для физической передачи файла на сервер, Ваши скрипты не имеют доступа к этому процессу. :)

Совет: используйте JQuery Form Plugin (входит в поставку Concrete5) для отправки формы по Ajax. Метод надежный, мы пользуемся часто. Вот тут как раз
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку
написано о том, как загрузку файлов с его помощью делать.
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: Загрузка файлы пользователем.

Сообщение sergio11ofpp » 06 июл 2013, 14:30 ,  »  Сообщение:#9

Спасибо !! ЗА ваше время)
sergio11ofpp
 
Сообщения: 53
Зарегистрирован: 05 июл 2013, 12:00

Re: Загрузка файлы пользователем.

Сообщение cmsservice » 06 июл 2013, 21:34 ,  »  Сообщение:#10

Обращайтесь, тем, кто пытается сам что-то делать, я всегда рад помочь.
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва


Вернуться в Помощь по concrete5

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

cron