Flipsizze
@Flipsizze

Как сделать так чтобы пользователь мог отправлять не одно а несколько изображений через форму?

Файл mail.php

<?php
	use PHPMailer\PHPMailer\PHPMailer;
	use PHPMailer\PHPMailer\Exception;

	require 'phpmailer/src/PHPMailer.php';
	require 'phpmailer/src/Exception.php';

	$mail = new PHPMailer(true);
	$mail->CharSet = 'UTF-8';
	$mail->setLanguage('ru', 'phpmailer/language/');
	$mail->isHTML(true);

	// От кого письмо
	$mail->setFrom('info@juvimed.ru');
	// Кому отправить
	$mail->addAddress('info@juvimed.ru');  
	// Тема письма
	$mail->Subject = 'Анкета модели';

	//Тело письма
	if(trim(!empty($_POST['user_name']))){
		$body.='<p><strong>ФИО Модели:</strong> '.$_POST['user_name'].'</p>';
	}
	if(trim(!empty($_POST['user_email']))){
		$body.='<p><strong>Email модели:</strong> '.$_POST['user_email'].'</p>';
	}
	if(trim(!empty($_POST['user_phone']))){
		$body.='<p><strong>Телефон модели: </strong> '.$_POST['user_phone'].'</p>';
	}
	if(trim(!empty($_POST['user_age']))){
		$body.='<p><strong>Возраст модели:</strong> '.$_POST['user_age'].'</p>';
	}
	if(trim(!empty($_POST['user_procedure']))){
		$body.='<p><strong>Процедура:</strong> '.$_POST['user_procedure'].'</p>';
	}

	$mail->addAttachment($_FILES['upload']['tmp_name'], $_FILES['upload']['name']);    // Optional name

	$mail->Body = $body;
	$mail->AltBody = '';

	// Отправляем
	if(!$mail->send()) {
		echo 'Ошибка';
	} else {
		header('location: /informatsiya-modelyam/thank-you/index.php');
	}
?>


Файл index.php

<script>
var dt = new DataTransfer();

$(".input-file input[type=file]").on("change", function () {
  let $files_list = $(this).closest(".input-file").next();
  $files_list.empty();

  for (var i = 0; i < this.files.length; i++) {
    let file = this.files.item(i);
    dt.items.add(file);

    let reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onloadend = function () {
      let new_file_input =
        '<div class="input-file-list-item">' +
        '<img class="input-file-list-img" src="' +
        reader.result +
        '">' +
        '<span class="input-file-list-name">' +
        file.name +
        "</span>" +
        '<a href="#" onclick="removeFilesItem(this); return false;" class="input-file-list-remove">x</a>' +
        "</div>";
      $files_list.append(new_file_input);
    };
  }
  this.files = dt.files;
});

function removeFilesItem(target) {
  let name = $(target).prev().text();
  let input = $(target).closest(".input-file-row").find("input[type=file]");
  $(target).closest(".input-file-list-item").remove();
  for (let i = 0; i < dt.items.length; i++) {
    if (name === dt.items[i].getAsFile().name) {
      dt.items.remove(i);
    }
  }
  input[0].files = dt.files;
}
</script>
<section class="form__models">
	<div class="container">
		<div class="col col_12">
			<form action="mail.php" method="POST" enctype="multipart/form-data">
				<div class="input-group">
					<div class="input-title">Ваше Фамилия Имя Отчество</div> 
					<input class="input input_bbonly" name="user_name" type="text" placeholder="Например: Иванова Снежана Александровна" required/> 
				</div>
				<div class="input-group">
					<div class="input-title">Ваш e-mail</div>
					<input class="input input_bbonly" name="user_email" type="email" placeholder="Например: info@juviclinic.ru" required/> 
				</div>
				<div class="input-group">
					<div class="input-title">Ваш телефон</div>
					<input class="input input_bbonly"  name="user_phone" type="tel" placeholder="Например: +7(999) 999-99-99" required/> 
				</div>
				<div class="input-group">
					<div class="input-title">Ваш возраст</div>
					<input class="input input_bbonly" name="user_age" type="number" placeholder="Например: 30лет" required/> 
				</div>
				<div class="input-group">
					<div class="input-title">Выберите процедуру</div>
					<select name="user_procedure" class="input input_bbonly">
						<option value="Любая процедура">Любая процедура</option>
						<option value="Нитевой лифтинг">Нитевой лифтинг</option>
						<option value="Криолиполиз">Криолиполиз</option>
						<option value="Контурная пластика лица">Контурная пластика лица</option>
						<option value="Работа с постакне">Работа с постакне</option>
						<option value="Работа с рубцами постакне">Работа с рубцами постакне</option>
						<option value="Борьба с пигментацией">Борьба с пигментацией</option>
						<option value="Работа с рубцами и шрамами на теле">Работа с рубцами и шрамами на теле</option>
						<option value="Подтяжка дряблой кожи живота после родов">Подтяжка дряблой кожи живота после родов</option>
						<option value="Розацеа">Розацеа</option>
						<option value="Темные круги под глазами">Темные круги под глазами</option>
						<option value="Коррекция асимметрии лица контурной пластикой">Коррекция асимметрии лица контурной пластикой</option>
						<option value="Prp терапия кожи Endoret ">Prp терапия кожи Endoret</option>
						<option value="SMAS - лифтинг лицо и тело на аппарате ultraformer">SMAS - лифтинг лицо и тело на аппарате ultraformer</option>
					</select>
				</div>
				<div class="input-group">
					<div class="input-title">Ваша фотография проблемной зоны</div>
					<br>
    				<label class="input-file">
      					<input name="upload" type="file">
      					<span>Выберите файл</span>
    				</label>
    				<div class="input-file-list"></div>
					<div class="input-title" style="font-size: 14px">*фотографию необходимо загрузить без макияжа, солнечных очков, масок, фильтров и др</div>
				</div>
				<div class="form__submit">
					<button class="submit" type="submit" style="color:#ffffff;background-color:#001146;border-radius:30px; -moz-border-radius:30px; -webkit-border-radius:30px;">Отправить анкету</button>
				</div>
				<div class="form-bottom-text text text_xs" field="text">
					Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c <a href="/privacy/">политикой конфиденциальности</a>
				</div>
			</form>
		</div>
	</div>
</section>
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
@aleks-th
На вскидку примеры.
https://www.php.net/manual/ru/features.file-upload...

Самый простой способ сделать несколько инпутов и их обрабатывать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы