Как прикрепить файл к форме отправке Есть решение
У меня есть кастомная форма отправки на странице которая работает через AJAX. Но мне не удается прикрепить файл к письму. Может кто знает где копать ?
Код класса:
<?php class shopPlenka { public static function sendPlenkaEmail($namep, $phonep, $emailp, $commentp, $photop){ $body = "К Вам поступила заявка на заказ ПЛЁНКИ для потолка. Данные клиента: \n \n" . "Ваше имя: ". $namep ."\n". "Телефон: " . $phonep ."\n" . "Email: " . $emailp ."\n" . "Сообщение: " . $commentp ."\n" . "Файлы: " . $photop ."\n \n" . "Это письмо отправлено автоматически с сайта ......"; $subject = 'Заказ плёнки | САЙТ'; $mail_message = new waMailMessage($subject, $body, 'text/plain'); $mail_message->setFrom('noreply@САЙТ', 'САЙТ'); $mail_message->addTo('test@test.ru', 'САЙТ'); $mail_message->addAttachment($photop, $filename); $mail_message->send(); return true; } }
Код html:
<div id="plenka_zakaz"> {if $wa->post("phonep") and shopPlenka::sendPlenkaEmail($wa->post("namep"), $wa->post("phonep"), $wa->post("emailp"), $wa->post("commentp"), $wa->post("photop"))} {* ничего не делаем *} {else} <form method="post" action="" id="plenka_zakaz_form" enctype="multipart/form-data"> <div class="email_item"> <input class="form-control" type="text" placeholder="Ваше имя" name="namep" required> </div> <div class="email_item"> <input class="form-control" type="tel" id="telephone" placeholder="Ваш телефон" name="phonep" required> </div> <div class="email_item"> <input class="form-control" type="email" placeholder="Ваш email" name="emailp" required> </div> <div class="email_item"> <p class="zakaz-garpun-form">Файл (фото чертежа)</p> <input class="form-control" type="file" placeholder="Файл" name="photop"> </div> <div class="email_item"> <textarea class="form-control" placeholder="Комментарий (в данном поле вы можете сообщить какие полотна вам необходимо подготовить к заказу в гарпуне)" name="commentp"></textarea> </div> <div class="email_item"> <button class="btn btn-default" type="submit">Заказать</button> </div> </form> {/if} </div>
Код js:
jQuery(document).ready(function($) { // PLENKA FORM $("#plenka_zakaz_form").submit(function(){ var form2 = $(this); var data2 = form2.serialize(); $.ajax({ type: 'POST', url: location.href, data: data2, success: function(response){ $('#plenka_zakaz').html('<div class="img_success"><img src="/wa-data/public/site/themes/easysale/img/success_icon.png" /></div><div class="thx_message"><strong>Ваша заявка на заказ плёнки успешно отправлена!</strong></div>'); }, error: function(response){ $('#plenka_zakaz').html('Произошла ошибка при отправке. Повторите попытку перезагрузив страницу браузера.'); //вместо формы пишем сообщение } }); return false; }); });
1 ответ
вам надо форму не сериализовать. а отправлять в скрытый iframe, иначе файлы не отправляются аяксом! Далее читать и парсить тело ответа. посмотрите как сделана загрузка файлов в вебасист!