@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
День добрый.
Вот.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 19:40
5000 руб./за проект
24 апр. 2024, в 19:18
50000 руб./за проект
24 апр. 2024, в 19:05
15000 руб./за проект