@CodeineDesign

Как добавить отправку файла в форму ajax _ php (скрипт рабочий — проверял)?

Про phpMailer знаю, но нужно добавить отправку файла уже в этот скрипт.

Input file сейчас есть, но не получается вставить его в php. Также хотелось бы, чтобы он выводил название того файла, которые человек прикрепил.

Коды ниже.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
 
<center>
 
<form name="MyForm" id="callbacks" action="" method="POST" enctype="multipart/form-data">

<table class="rr" style="border-style: none;">
    <tr style="border-style: none;">
        <td width="18%"><input name="name" type="text" placeholder="Представьтесь" required/></td>
        <td rowspan="4" width="18%">  
     <div class="example-1">
  <div class="form-group">
    <label class="label" for="mail_file">
      <i class="material-icons">attach_file</i>
      <span class="title">Добавить файл</span>
      <input type="file" id="mail_file" name="mail_file">
    </label>
  </div>
</div>
  </div>
</div>
</td>
<td rowspan="4" style="border-style: none;"><input id="submit" type="submit" name="done" style="height: 125px; width: 315px;" value="РАССЧИТАТЬ ТЕХНИЧЕСКОЕ ЗАДАНИЕ"/></td>
    </tr>
    <tr style="border-style: none;">
        <td><input type="text" style="margin-top: px;" name="phone" type="tel" placeholder="Ваш телефон" required/></td>
    </tr>
    <tr style="border-style: none;">
        <td><input type="text" style="margin-top: px;" name="email" placeholder="Ваш email" required/></td>
    </tr>
</table>
</form>
<div id ="erconts" style="display: none">
</div>

</center>

<script>
$(document).ready(function()
{
        $("#submit").click(function()
        {
                $("#erconts").fadeIn(500);
                $.ajax(
                {
                        type: "POST",
                        url: "tehz/tz2.php", // Адрес обработчика
                        data: $("#callbacks").serialize(),
                        error:function()
                        {
                                $("#erconts").html("Произошла ошибка!");
                        },
                        beforeSend: function()
                        {
                                $("#erconts").html("Отправляем данные...");
                        },
                        success: function(result)
                        {
                                $("#erconts").html(result);
                                checkThis();
                        }
                });
        return false;
        });
});
</script>


<?
   //Получаем последний компонеет имени загруженного файла
$name_of_mail_file =
    basename($_FILES['mail_file']['name']);
    // например, index.php
    
//получаем расширение файла (без точки)
$type_of_mail_file =
     substr($name_of_mail_file,
   // позиция вхождения точки + 1
    strrpos($name_of_mail_file, '.') + 1);
$size_of_mail_filee =
    $_FILES["mail_file"]["size"]/1024;
    //размер в KBs 
	
	$path_of_mail_file = $upload_folder . $name_of_mail_file;


$tmp_path = $_FILES["mail_file"]["tmp_name"];
 
if(isset($_POST["name"]))
{
        if(isset($_POST["name"]))
        {
                $name = $_POST["name"];
        }
        if(isset($_POST["phone"]))
        {
                $phone= $_POST["phone"];
        }
		 if(isset($_POST["email"]))
        {
                $email= $_POST["email"];
        }
 
        if($name=="" or $phone=="" or $email=="")
        { // Проверяем на заполненность всех полей.
                echo "Пожалуйста, заполните все поля";
        }
        else
        {
                $ip=$_SERVER["REMOTE_ADDR"]; // Вычисляем ip пользователя
                $brose=$_SERVER["HTTP_USER_AGENT"]; // Вычисляем браузер пользователя
                $to = "mail@clearain.ru"; // Ваш email адрес
                $subject = "Техническое Задание на расчет"; // тема письма
                $headers .= "Content-Type: text/html;
                ";
                $headers .= "Отправитель: Посетитель сайта"; // Отправитель письма
                $message = "
                Имя: $name<br>
                Телефоны: $phone<br>
				Email: $email<br>
                IP отправителя: $ip<br>
                Браузер отправителя: $brose<br>
                ";
 
                $send = mail($to, $subject, $message, $headers);
                if ($send == "true")
                {
                        echo "Ваше сообщение отправлено. Мы ответим вам в ближайшее время.";
                }
                else
                {
                        echo "Не удалось отправить, попробуйте снова!";
                }
        }
}
 
?>
  • Вопрос задан
  • 165 просмотров
Решения вопроса 3
Eridani
@Eridani
Мимо проходил
Используйте FormData и не используйте serialize.
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
ajax send file jquery первые строчки в гугле.
Ответ написан
slo_nik
@slo_nik Куратор тега PHP
День добрый.
Вот.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы