При отправке файлов через поля формы имеется одна тонкость.
Файл передается на сервер в качестве временного файла, который надо сохранить перед дальнейшим использованием.
После использования сохраненный файл надо удалить, если он не нужен далее.
Временный файл удалится сам после окончания работы скрипта.

Текст формы на html странице.

<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 в контроллере

 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();
    }

 Или другой вариант.

html

		<form   name="contact_form" enctype="multipart/form-data"  action="" method="post" >
			...............
			...............
			...............
							<input  id="files" type="file"   name="files[]" multiple="" />

 

php

// получаем прикрепленные файлы
$cash = __DIR__.DS.'cash' ;
$files = $jinput->files->get( 'files', array(), 'array' ); 
$attachment = null;
foreach ($files as $i => $file){
	if (JFile::copy($file['tmp_name'],$cash.DS.$file['name']))
	{
		$attachment[$i] =  $cash.DS.$file['name'];
	}
	
}
// Создаем объект JMail  
$mail = JFactory::getMailer();
// выполняем функцию sendMail
$send = $mail->sendMail($from, $fromname, $recipient, $subject, $body, $mode=1, $cc=null, $bcc=null, $attachment, $replyto, $replytoname);
// удаляем прикрепленные файлы
JFile::delete($attachment);

 

 

 

Добавить комментарий


Защитный код
Обновить