Как прикрепить файл к форме отправке Есть решение

У меня есть кастомная форма отправки на странице которая работает через 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 ответ

  • 1

    вам надо форму не сериализовать. а отправлять в скрытый iframe, иначе файлы не отправляются аяксом! Далее читать и парсить тело ответа. посмотрите как сделана загрузка файлов в вебасист!

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите