Отправка файла из формы через ТДС
alexpnz
29 мая 2015 г.
Помогите с таким вопросом. В 6 версии отправкаписьма сделана по другому, не могу разобраться. Редакция "Мой сайт". В статическом документе есть страница с формой, один из Input типа file. В NLC код следующий:
Текст из Input приходит, как прикрепить выбранный файл не резобрался. Помогите пожалуйста!
Как я понял
это как раз прикрепление файла, но как подключить не знаю
<?php
if (Core_Array::getPost('go')) {
if (Core_Captcha::valid(Core_Array::getPost('captcha_id'), Core_Array::getPost('captcha'))) {
$siteId = Core_Array::get(Core_Page::instance()->libParams, 'site_id');
$emailTo = Core_Array::get(Core_Page::instance()->libParams, 'admin_email');
$sText = '';
$sText .= 'Фамилия, Имя, Отчество: ' . Core_Array::getPost('name', '') . chr(10);
$sText .= 'Возраст: ' . Core_Array::getPost('age', '') . chr(10);
$sText .= 'Образование: ' . Core_Array::getPost('education', '') . chr(10);
$sText .= 'Специальность: ' . Core_Array::getPost('special', '') . chr(10);
$sText .= 'Желаемая должность: ' . Core_Array::getPost('price', '') . chr(10);
$sText .= 'Контактный телефон: ' . Core_Array::getPost('phone', '') . chr(10);
$sText .= 'E-mail: ' . Core_Array::getPost('email', '') . chr(10);
$sText .= 'Информация о себе (в свободной форме): ' . Core_Array::getPost('text', '') . chr(10);
$sText .= 'dddddd: ' . Core_Array::getPost('resume', '') . chr(10);
$include_file= Core_Array::getPost('resume', '') . chr(10);
$file= Core_Array::getPost('resume', '') . chr(10);
$oCore_Mail_Driver = Core_Mail::instance()
->to($emailTo)
->from( Core_Valid::email($emailTo)
? $emailTo
: $emailTo
)
->subject('Резюме на вакансии с сайта')
->message(trim($sText))
->contentType('text/plain')
// ->header('charset','KOI8-R')
->attach(array(
'filepath' => $include_file,
'filename' => $file,
))
->send();
// ->config(array('charset'=>'KOI8-R'))
if ($oCore_Mail_Driver->getStatus()) {
// echo $sText;
// echo $emailTo;
// echo $siteId;
?>
<div class="f-message f-message-success">
<h2>Информация отправлена успешно</h2>
<p>
Спасибо! Информация принята. <br/>
</p>
</div><!--f-message -->
<?php
} else {
?>
<div class="f-message f-message-error">
<h2>Ошибка отправки письма</h2>
<p>
К сожалению, Ваша информация не была отправлена, попробуйте отправить ее позже.
</p>
</div><!--f-message -->
<?php
}
?>
<p><a href="<?php echo $_SERVER['HTTP_REFERER']; ?>">Вернуться</a> на предыдущую страницу.</p>
<?php
} else {
?>
<div class="f-message f-message-error">
<h2>Контрольное число введено неверно</h2>
<p>
К сожалению, Ваша информация не была отправлена, так как вы ввели не верное контрольное число
</p>
<p><a href="<?php echo $_SERVER['HTTP_REFERER']; ?>">Вернуться</a> на предыдущую страницу.</p>
</div><!--f-message -->
<?php
}
}
?>
if (Core_Array::getPost('go')) {
if (Core_Captcha::valid(Core_Array::getPost('captcha_id'), Core_Array::getPost('captcha'))) {
$siteId = Core_Array::get(Core_Page::instance()->libParams, 'site_id');
$emailTo = Core_Array::get(Core_Page::instance()->libParams, 'admin_email');
$sText = '';
$sText .= 'Фамилия, Имя, Отчество: ' . Core_Array::getPost('name', '') . chr(10);
$sText .= 'Возраст: ' . Core_Array::getPost('age', '') . chr(10);
$sText .= 'Образование: ' . Core_Array::getPost('education', '') . chr(10);
$sText .= 'Специальность: ' . Core_Array::getPost('special', '') . chr(10);
$sText .= 'Желаемая должность: ' . Core_Array::getPost('price', '') . chr(10);
$sText .= 'Контактный телефон: ' . Core_Array::getPost('phone', '') . chr(10);
$sText .= 'E-mail: ' . Core_Array::getPost('email', '') . chr(10);
$sText .= 'Информация о себе (в свободной форме): ' . Core_Array::getPost('text', '') . chr(10);
$sText .= 'dddddd: ' . Core_Array::getPost('resume', '') . chr(10);
$include_file= Core_Array::getPost('resume', '') . chr(10);
$file= Core_Array::getPost('resume', '') . chr(10);
$oCore_Mail_Driver = Core_Mail::instance()
->to($emailTo)
->from( Core_Valid::email($emailTo)
? $emailTo
: $emailTo
)
->subject('Резюме на вакансии с сайта')
->message(trim($sText))
->contentType('text/plain')
// ->header('charset','KOI8-R')
->attach(array(
'filepath' => $include_file,
'filename' => $file,
))
->send();
// ->config(array('charset'=>'KOI8-R'))
if ($oCore_Mail_Driver->getStatus()) {
// echo $sText;
// echo $emailTo;
// echo $siteId;
?>
<div class="f-message f-message-success">
<h2>Информация отправлена успешно</h2>
<p>
Спасибо! Информация принята. <br/>
</p>
</div><!--f-message -->
<?php
} else {
?>
<div class="f-message f-message-error">
<h2>Ошибка отправки письма</h2>
<p>
К сожалению, Ваша информация не была отправлена, попробуйте отправить ее позже.
</p>
</div><!--f-message -->
<?php
}
?>
<p><a href="<?php echo $_SERVER['HTTP_REFERER']; ?>">Вернуться</a> на предыдущую страницу.</p>
<?php
} else {
?>
<div class="f-message f-message-error">
<h2>Контрольное число введено неверно</h2>
<p>
К сожалению, Ваша информация не была отправлена, так как вы ввели не верное контрольное число
</p>
<p><a href="<?php echo $_SERVER['HTTP_REFERER']; ?>">Вернуться</a> на предыдущую страницу.</p>
</div><!--f-message -->
<?php
}
}
?>
Текст из Input приходит, как прикрепить выбранный файл не резобрался. Помогите пожалуйста!
Как я понял
->attach(array(
'filepath' => $include_file,
'filename' => $file,
'filepath' => $include_file,
'filename' => $file,
это как раз прикрепление файла, но как подключить не знаю
ARTATOM
3 июня 2015 г.
Как я понял, вам нужно принять файл, который пользователь выбрал в форме и, в качестве аттача, отправить с письмом
У вас в форме, должно быть, есть поле
При выборе файла атрибут value этого поля будет содержать имя отправляемого файла.
1) Для отправки файла нужно (см.http://htmlbook.ru/samhtml5/formy/zagruzka-failov )
2) В форме желательно указать максимальный размер загружаемого файла (в байтах)
3) На серверной стороне принятые файлы "складируются" во временный каталог, указанный в php.ini, при этом заполняется суперглобальная переменная $_FILES (см.http://php.net/manual/ru/features.file-upload.post-method.php ):
$_FILES['userfile']['name'] - Оригинальное имя файла на компьютере клиента.
$_FILES['userfile']['type'] - Mime-тип файла, в случае, если браузер предоставил такую информацию. Пример: "image/gif". Этот mime-тип не проверяется в PHP, так что не полагайтесь на его значение без проверки.
$_FILES['userfile']['size'] - Размер в байтах принятого файла.
$_FILES['userfile']['tmp_name'] - Временное имя, с которым принятый файл был сохранен на сервере.
$_FILES['userfile']['error'] - Код ошибки, которая может возникнуть при загрузке файла.
4) Модифицируем ваш код:
...
$oCore_Mail_Driver = Core_Mail::instance()
->to($emailTo)
->from( Core_Valid::email($emailTo)
? $emailTo
: $emailTo
)
->subject('Резюме на вакансии с сайта')
->message(trim($sText))
->contentType('text/plain');
// ->header('charset','KOI8-R');
$aFileInfo = Core_Array::getFiles("resume", array()); // получаем ассоциативный подмассив, описывающий наш файл
if (is_array($aFileInfo) && isset($aFileInfo['name']) && $aFileInfo['size'] > 0)
{
echo $aFileInfo['tmp_name'];
// Код для аттача:
$oCore_Mail_Driver
->attach(array( 'filepath' => $aFileInfo['tmp_name'],
'filename' => $aFileInfo['name'] ));
}
$oCore_Mail_Driver
->send();
5. удалять файл не нужно: после завершения выполнения скрипта php-интерпретатор автоматически удаляет временные файлы
У вас в форме, должно быть, есть поле
<input name="resume" type="file">
При выборе файла атрибут value этого поля будет содержать имя отправляемого файла.
1) Для отправки файла нужно (см.
задать метод отправки данных POST (method="post")
установить у атрибута enctype значение multipart/form-data.
<form enctype="multipart/form-data" method="post">
2) В форме желательно указать максимальный размер загружаемого файла (в байтах)
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
3) На серверной стороне принятые файлы "складируются" во временный каталог, указанный в php.ini, при этом заполняется суперглобальная переменная $_FILES (см.
$_FILES['userfile']['name'] - Оригинальное имя файла на компьютере клиента.
$_FILES['userfile']['type'] - Mime-тип файла, в случае, если браузер предоставил такую информацию. Пример: "image/gif". Этот mime-тип не проверяется в PHP, так что не полагайтесь на его значение без проверки.
$_FILES['userfile']['size'] - Размер в байтах принятого файла.
$_FILES['userfile']['tmp_name'] - Временное имя, с которым принятый файл был сохранен на сервере.
$_FILES['userfile']['error'] - Код ошибки, которая может возникнуть при загрузке файла.
4) Модифицируем ваш код:
...
$oCore_Mail_Driver = Core_Mail::instance()
->to($emailTo)
->from( Core_Valid::email($emailTo)
? $emailTo
: $emailTo
)
->subject('Резюме на вакансии с сайта')
->message(trim($sText))
->contentType('text/plain');
// ->header('charset','KOI8-R');
$aFileInfo = Core_Array::getFiles("resume", array()); // получаем ассоциативный подмассив, описывающий наш файл
if (is_array($aFileInfo) && isset($aFileInfo['name']) && $aFileInfo['size'] > 0)
{
echo $aFileInfo['tmp_name'];
// Код для аттача:
$oCore_Mail_Driver
->attach(array( 'filepath' => $aFileInfo['tmp_name'],
'filename' => $aFileInfo['name'] ));
}
$oCore_Mail_Driver
->send();
5. удалять файл не нужно: после завершения выполнения скрипта php-интерпретатор автоматически удаляет временные файлы
ARTatom
Авторизация