Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 22 Ответов
  • 8879 Просмотров
*

Александр216

  • Захожу иногда
  • 107
  • 1 / 0
Подскажите, где можно почитать о вставке в Joomla форм для загрузки файлов и последующей их обработке (проверка, добавление в базу, ресайз фотографий и пр.). Какие специфические джумловские методы используются? Или можно стандартные php-конструкции применять?
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Загрузка и обработка файлов
« Ответ #1 : 14.05.2013, 10:07:01 »
никаких
есть стандартный метода работы с файлами\каталогами, не более
Еще есть отросток API от медиа менеджера для загрузки и проверки на расширение.
На этом все, остальное - что хотите то и делайте

По теме ссылки
http://docs.joomla.org/API15:JFile
http://api.joomla.org/Joomla-Platform/FileSystem/JFile.html
http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/rabota-s-fajlami-v-joomla-klass-jfile

и прочие
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

prometheus

  • Захожу иногда
  • 84
  • 7 / 0
Re: Загрузка и обработка файлов
« Ответ #2 : 14.05.2013, 10:57:30 »
Нашел в инете написанный для этого дела класс и использую class.upload
Он не специально для Joomla просто библиотека и только для работы с изображениями
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Загрузка и обработка файлов
« Ответ #3 : 14.05.2013, 10:58:09 »
в Joomla 2.5+ так же есть небольшой функционал по обработке изображений:
http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/rabota-s-izobrazheniyami-v-joomla-jimage
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Загрузка и обработка файлов
« Ответ #4 : 14.05.2013, 11:00:36 »
Istaan кстати вы правы, я как-то забыл про эту библиотеку
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Александр216

  • Захожу иногда
  • 107
  • 1 / 0
Re: Загрузка и обработка файлов
« Ответ #5 : 29.05.2013, 00:18:35 »
Начал пробовать. До обработки файлов не добрался, проблема на стадии передачи пути к файлу.
Пишу в форме:
<input type="file" size="60" name="doc_file">

Далее:
if (JRequest::getVar('doc_file')) {
$add_doc_file = JRequest::getVar('doc_file', 'Нет файла', 'post', 'string', 7);}
echo $add_doc_file;

Выводится только имя выбранного файла, без директории.
Прочитал, что JRequest::getVar производит обработку переменной. Может, проблема из-за этого? Или еще из-за чего-то?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Загрузка и обработка файлов
« Ответ #6 : 29.05.2013, 00:25:21 »
Код: html4strict
<form enctype = "multipart/form-data" action = "index.php?option=com_yandexyrl" method = "post" name = "adminForm">
  <input type = "file" class = "inputbox" value = "" name = "file_upload">
  <input class = "btn" type = "submit" value = "Импорт"/>
  <input type = "hidden" name = "task" value = "import"/>
  <input type = "hidden" name = "option" value = "com_yandexyrl"/>
    <?php echo JHTML::_('form.token'); ?>
</form>
В контроллере обрабатываешь
Код: php-brief
 function import()
    {
        $app = JFactory::getApplication();
        $jinput = $app->input;

        // получаем параметры формы
        $file = $jinput->files->get('file_upload', null, 'files', 'array');
        $filename = JFile::makeSafe($file['name']);
// очищаем имя файла от всякой фигни

        $src = $file['tmp_name']; //откуда ;)
        $dest = JPATH_ROOT . "/tmp/" . $filename; // куда (;
// вот этой конструкцией можно проверить расширение файла
// для использования нескольких типов файлов можно заюзать массив...
        if (strtolower(JFile::getExt($filename)) == 'xml') {
            if (JFile::upload($src, $dest)) {
                //если все хорошо и файл залился - подключаем импорт
                require_once(JPATH_COMPONENT . '/import.php');
                //удаляем временный файл импорта
                JFile::delete($dest);
            } else {
                //если что то вдруг пошло не так, то сообщение об ошибочке или еще ченить )
                JFactory::getApplication()->enqueueMessage('Не получается обработать файл', 'error');
            }
        } else {
            // ну тут тоже все понятно - если тип файла не XML
            JFactory::getApplication()->enqueueMessage('Неправильное расширение файла', 'error');
        }

        parent::display();
    }
*

Александр216

  • Захожу иногда
  • 107
  • 1 / 0
Re: Загрузка и обработка файлов
« Ответ #7 : 29.05.2013, 01:01:04 »
Спасибо!
Сразу вопросы:
1. Зачем нужно
Код
<?php echo JHTML::_('form.token'); ?>

2. Что делает
Код
JFactory::getApplication();

3. Что за файл
Код
'/import.php' 
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Загрузка и обработка файлов
« Ответ #8 : 29.05.2013, 01:08:55 »
<?php echo JHTML::_('form.token'); ?> защита формы
// получаем параметры формы c помощью JInput       
$file = JFactory::getApplication()->input->files->get('file_upload', null, 'files', 'array');
3. Это мой файл для обработки, а вам вместо него нужно совершать ваши действиия
*

Александр216

  • Захожу иногда
  • 107
  • 1 / 0
Re: Загрузка и обработка файлов
« Ответ #9 : 29.05.2013, 01:15:49 »
Спасибо! Буду пробовать)
*

Александр216

  • Захожу иногда
  • 107
  • 1 / 0
Re: Загрузка и обработка файлов
« Ответ #10 : 12.06.2013, 01:26:26 »
Для строки
Код
 $file = $jinput->files->get('file_upload', null, 'files', 'array');
Выдает ошибку:
Call to a member function get() on a non-object
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Загрузка и обработка файлов
« Ответ #11 : 12.06.2013, 10:29:07 »
Для строки
Код
 $file = $jinput->files->get('file_upload', null, 'files', 'array');
Выдает ошибку:
Call to a member function get() on a non-object
а перед этим есть: $jinput = JFactory::getApplication()->input; ??
*

Александр216

  • Захожу иногда
  • 107
  • 1 / 0
Re: Загрузка и обработка файлов
« Ответ #12 : 12.06.2013, 13:09:29 »
а перед этим есть: $jinput = JFactory::getApplication()->input; ??
Есть.
*

Александр216

  • Захожу иногда
  • 107
  • 1 / 0
Re: Загрузка и обработка файлов
« Ответ #13 : 12.06.2013, 13:16:00 »
Попытался прочитать документацию по JInput. Если правильно перевел с английского, то для его использования необходима версия 2.5 или выше. А у меня - 1.5. Может быть, есть какие-то альтернативные методы для более низких версий? 
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

Александр216

  • Захожу иногда
  • 107
  • 1 / 0
Re: Загрузка и обработка файлов
« Ответ #15 : 12.06.2013, 20:37:00 »
Как будто бы работает, всем спасибо!

Еще вопрос, может быть, не совсем по теме.

Пытаюсь имя файла сформировать из транслитерированного заголовка, введенного пользователем в ту же форму. Пишу примерно следующиее:
         
Код
           $ishodnie='абвгдеёжзиклмнопрстуфхцчшщъыьэюя';
           $konechnie='abvgdeejziklmnoprstufhchss_i_eua';
            for ($i=0; $i<=32; $i++) {
                $replace_from=substr($ishodnie,$i*2,2); // умножаем на два, т.к. русские символы кодируются двумя байтами
                $replace_to=substr($konechnie,$i,1);
                echo $i.'-'.$replace1.'-'.$replace2.'<br>'; // вывод для контроля. Работает правильно, т.е. выводится: "1 - а - a, 2 - б - b" и т.д.
 
               
                $lat_text=str_replace($replace_from, $replace_to, $rus_text);
            }
В итоге текст состоит из ромбиков с вопросами, а сам файл закачивается с абракадабренным именем. Кодировка utf-8, все остальные кириллические символы выводятся нормально (в.т.ч. и проверка из 6-й строки данного кода).
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Загрузка и обработка файлов
« Ответ #16 : 12.06.2013, 21:35:11 »
Код: php-brief
<?php echo ru_RULocalise::transliterate('Привет мир!'); ?>
это для 3
для Joomla 1.5, не пробовал должно работать
Код: php-brief
<?php echo JFilterOutput::stringURLSafe('Привет мир!'); ?>
*

Александр216

  • Захожу иногда
  • 107
  • 1 / 0
Re: Загрузка и обработка файлов
« Ответ #17 : 12.06.2013, 22:54:51 »
Код: php-brief
<?php echo ru_RULocalise::transliterate('Привет мир!'); ?>
это для 3
для Joomla 1.5, не пробовал должно работать
Код: php-brief
<?php echo JFilterOutput::stringURLSafe('Привет мир!'); ?>
Не-а, не работает.
В первом случае пишет, что не найден такой класс, во втором выводит дефис. Дефисом заменяется пробел. Если сплошной текст, то ничего не выводит.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Загрузка и обработка файлов
« Ответ #18 : 12.06.2013, 23:05:32 »
joomla15/plugins/system/uarualias.php function stringURLSafe($string)
joomla15/libraries/phputf8/str_ireplace.php utf8_ireplace
*

Paha_web

  • Захожу иногда
  • 166
  • 1 / 0
  • Еще правок хотите?
Re: Загрузка и обработка файлов
« Ответ #19 : 23.08.2013, 17:11:44 »
Код: html4strict
<form enctype = "multipart/form-data" action = "index.php?option=com_yandexyrl" method = "post" name = "adminForm">
  <input type = "file" class = "inputbox" value = "" name = "file_upload">
  <input class = "btn" type = "submit" value = "Импорт"/>
  <input type = "hidden" name = "task" value = "import"/>
  <input type = "hidden" name = "option" value = "com_yandexyrl"/>
    <?php echo JHTML::_('form.token'); ?>
</form>
В контроллере обрабатываешь
Код: php-brief
 function import()
    {
        $app = JFactory::getApplication();
        $jinput = $app->input;

        // получаем параметры формы
        $file = $jinput->files->get('file_upload', null, 'files', 'array');
        $filename = JFile::makeSafe($file['name']);
// очищаем имя файла от всякой фигни

        $src = $file['tmp_name']; //откуда ;)
        $dest = JPATH_ROOT . "/tmp/" . $filename; // куда (;
// вот этой конструкцией можно проверить расширение файла
// для использования нескольких типов файлов можно заюзать массив...
        if (strtolower(JFile::getExt($filename)) == 'xml') {
            if (JFile::upload($src, $dest)) {
                //если все хорошо и файл залился - подключаем импорт
                require_once(JPATH_COMPONENT . '/import.php');
                //удаляем временный файл импорта
                JFile::delete($dest);
            } else {
                //если что то вдруг пошло не так, то сообщение об ошибочке или еще ченить )
                JFactory::getApplication()->enqueueMessage('Не получается обработать файл', 'error');
            }
        } else {
            // ну тут тоже все понятно - если тип файла не XML
            JFactory::getApplication()->enqueueMessage('Неправильное расширение файла', 'error');
        }

        parent::display();
    }


Хочу подключить сюда массив
        if (strtolower(JFile::getExt($filename)) == 'xml') {

Пишу

    $files_type = array('jpeg','png');

        if (in_array(strtolower(JFile::getExt($filename)), $files_type)) {


не работает! Помогите.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Загрузка и обработка файлов
« Ответ #20 : 23.08.2013, 18:04:01 »
а если так
Код: php-brief
$files_type = array('jpeg','png');
$fileext = strtolower(JFile::getExt($filename));
var_dump($fileext);
var_dump(in_array($fileext, $files_type));
die();
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Re: Загрузка и обработка файлов
« Ответ #21 : 24.08.2013, 00:01:26 »
понимаю что банальность, но проверяйте не только jpeg, но и jpg :)
сам частенько на таких тупиках время терял
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Paha_web

  • Захожу иногда
  • 166
  • 1 / 0
  • Еще правок хотите?
Re: Загрузка и обработка файлов
« Ответ #22 : 30.08.2013, 13:05:19 »
а если так
Код: php-brief
$files_type = array('jpeg','png');
$fileext = strtolower(JFile::getExt($filename));
var_dump($fileext);
var_dump(in_array($fileext, $files_type));
die();

Пишет какую-то ошибку...
Я сделал проще)))

if (strtolower(JFile::getExt($filename)) == 'jpeg' or strtolower(JFile::getExt($filename)) == 'png') {
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Обработка Get запроса главной страницей

Автор Maklay

Ответов: 7
Просмотров: 3319
Последний ответ 25.05.2018, 11:16:51
от ShaMAD
Компонент для подмены файлов ядра jHacksPro

Автор rigin

Ответов: 0
Просмотров: 1090
Последний ответ 04.10.2014, 18:13:40
от rigin
Обработка категорий для своего компонента

Автор bombapiter

Ответов: 7
Просмотров: 1956
Последний ответ 30.09.2013, 16:42:17
от bombapiter
JavaScript обработка XML формы

Автор Daiver-86

Ответов: 28
Просмотров: 3424
Последний ответ 12.06.2013, 21:04:51
от Aleks.Denezh
Обработка POST запроса Joomla 2.5

Автор mulekula

Ответов: 8
Просмотров: 6366
Последний ответ 03.02.2013, 18:54:30
от artlux