Перейти к содержимому


Фотография
- - - - -

addAttachment - родной Joomla!

addattachment

Лучший Ответ CB9TOIIIA , 25 January 2017 - 07:44

Все же так сделал:

 $.ajax({
                type: "POST",
                url: actionUrl,
               // data: form.serialize(),
                dataType: 'json',
                accepts: {
                    text: "application/json"
                },
                data:  new FormData(this),
                async: false,
                cache: false,
                contentType:false,
                processData:false,
Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 12

#1 CB9TOIIIA

CB9TOIIIA

Отправлено 21 January 2017 - 12:25

Всем привет, тут пилю форму к https://github.com/C...lback_fork_cb9t- было бы классно добавить файлы.

Но вот вопрос...

 

Добиться прикрепления файла я смог этой конструкцией:

$mail->addAttachment(JPATH_SITE.'/1.png','1.png');  
$sent = $mail->Send();

Но вот - формой пока не выходит... где может быть ошибка?

<p>Изображения:
<input type="file" name="simplecallback_files[]" />
<input type="file" name="simplecallback_files[]" />
</p>
 $input = JFactory::getApplication()->input;
 $files = $input->files->get('simplecallback_files', array(), 'array' );


if ( count( $files ) ) {
	foreach ( $files as $file ) {
		$mail->addAttachment( $file['tmp_name'], $file['name'] ); // аттачим файлы
	}
}

¯\_(ツ)_/¯  видел: http://forum.jbzoo.c...zakaze/?p=45960- но чет не помогло.


Сообщение отредактировал CB9TOIIIA: 21 January 2017 - 12:53

  • 0

#2 fiction13

fiction13

Отправлено 21 January 2017 - 13:08

Ты ж сам пишешь, и это правильно

$mail->addAttachment(JPATH_SITE.'/1.png','1.png');  

А потом пишешь

$mail->addAttachment( $file['tmp_name'], $file['name'] ); // аттачим файлы

Чувствуешь разницу? 


  • 1

#3 CB9TOIIIA

CB9TOIIIA

Отправлено 21 January 2017 - 13:10

не особо - я понимаю надо смотреть в $_FILES

 

в Joomla! это вроде как:

 $files = $input->files->get('simplecallback_files');

ну и пробую подставить. не так?

 

Смотрел тему: http://joomlaforum.r...html#msg1336184 вроде схоже - но чет не пашет)


Сообщение отредактировал CB9TOIIIA: 21 January 2017 - 13:12

  • 0

#4 fiction13

fiction13

Отправлено 21 January 2017 - 13:15

В $file['tmp_name'] находится временный адрес файла (привет jbdump). Ну и добавь перед ним JPATH_SITE.


  • 0

#5 CB9TOIIIA

CB9TOIIIA

Отправлено 21 January 2017 - 13:18

В $file['tmp_name'] находится временный адрес файла (привет jbdump). Ну и добавь перед ним JPATH_SITE.

if ( !empty($file['tmp_name']) ) {		$mail->addAttachment(JPATH_SITE.'/'.$file['tmp_name'], $file['name'] ); // аттачим файлы	}
Не приходит. Я вот дампю - но не понимаю как в helper'e его использовать - если он по ajax там приходит ответ.

Сообщение отредактировал CB9TOIIIA: 21 January 2017 - 16:51

  • 0

#6 CB9TOIIIA

CB9TOIIIA

Отправлено 21 January 2017 - 13:27

Вроде понял: 

jbdump::log($file['tmp_name']);

  • 0

#7 CB9TOIIIA

CB9TOIIIA

Отправлено 21 January 2017 - 13:33

В общем пробую: 

<input type="file" name="file" />

В хелпере:

$file = $input->files->get('file');

ниже:

jbdump::log($file);

В логах:

2017-01-21 15:30:10	127.0.0.1		helper.php:113		...		NULL
2017-01-21 15:31:25	127.0.0.1		helper.php:113		...		NULL

  • 0

#8 CB9TOIIIA

CB9TOIIIA

Отправлено 21 January 2017 - 20:23

Что я только не пробовал и так:

	$uploadFile = $files['simplecallback_file'];
		if (is_uploaded_file($uploadFile['tmp_name']))
		{
			JFile::upload($uploadFile['tmp_name'], JPATH_ROOT.'/'.$uploadFile['name']);
            $filemin = $mail->addAttachment($uploadFile['tmp_name'], JPATH_ROOT.'/'.$uploadFile['name']);  
		}	

и так


//	$filemin =   $mail->addAttachment(JPATH_SITE.DS.$file['tmp_name'], $file['name'] ); // аттачим файлы

Так работает:

 $filemin = $mail->addAttachment(JPATH_SITE.DS.'1.png','1.png'); 

А по другому не канает... 

        $file  = $input->files->get('simplecallback_file');
  <div class="control-group">
              <label>Изображения:
               <input type="file" name="simplecallback_file" />
              </label>
            </div>   
 <form enctype="multipart/form-data" id="simplecallback-119" action="http://kadi.local/index.php?option=com_ajax&module=simplecallback&format=json" class="form-inline simplecallback " method="post"   data-simplecallback-form>

  • 0

#9 CB9TOIIIA

CB9TOIIIA

Отправлено 21 January 2017 - 21:40

В общем хз - третьи сутки пошли - не понимаю, что не так))

        jimport('joomla.application.module.helper');
        jimport('joomla.filesystem.folder');
        jimport('joomla.filesystem.file'); 
      
        $file =  JFactory::getApplication()->input->files->get('simplecallback_file', null, 'files', 'array');

// Создадим каталог для наших файлов, если еще нет
if ( !JFolder::exists( JPATH_SITE . '/tmp' ) ) {
	JFolder::create( JPATH_SITE . '/tmp' );
	// создадим файл заглушку
	$file = fopen( JPATH_SITE . '/tmp/index.html', 'w' );
	fclose( $file );
} 

        // Загружаем файл
JFile::upload( $file['tmp_name'], JPATH_SITE . '/tmp/' . $file['tmp_name'], false, false, array('php_ext_content_extensions' => array('tar', 'gz', 'tgz', 'bz2', 'tbz', 'jpa')) );

и так:

$mail->addAttachment(JPATH_SITE . '/tmp/' . $file['tmp_name'], $file['tmp_name'], $encoding = 'base64', $type = 'application/octet-stream', $disposition = 'attachment');

так:

$mail->addAttachment(JPATH_SITE . '/tmp/' . $file['tmp_name'],$file['tmp_name']);  

Все время false:

2017-01-21 23:32:44	127.0.0.1		helper.php:138		...		FALSE
2017-01-21 23:34:11	127.0.0.1		helper.php:140		...		FALSE
2017-01-21 23:36:45	127.0.0.1		helper.php:138		...		FALSE
           <div class="control-group">
              <label>Изображения:
               <input type="file" name="simplecallback_file" />
              </label>
            </div>  

  • 0

#10 fiction13

fiction13

Отправлено 22 January 2017 - 08:06

Добро пожаловать в клуб ;-)

 

Как изображение передается по ajax? Нужна FormData.


  • 1




Click to return to top of page in style!