У меня успешно отправляется форма без файла:
const formData = {
name: this.name,
phone: this.phone,
file: this.file,
carTitle: this.carTitle,
carModel: this.carModel,
carYear: this.carYear,
carEngine: this.carEngine,
carEngineVolume: this.carEngineVolume,
carMileage: this.carMileage,
question: this.question,
};
const data = toFormData(formData);
fetch(`${SITE_DOMEN}/mail.php`, {
method: "POST",
body: data,
})
метод toFormData просто пробегается по объекту, создает new FormData и делает append.
php обработчик:
<?php
$recepient = "test@gmail.com";
$siteName = "Sitename";
$name = trim($_POST["name"]);
$phone = trim($_POST["phone"]);
$file = trim($_POST["file"]);
$carTitle = trim($_POST["carTitle"]);
$carModel = trim($_POST["carModel"]);
$carYear = trim($_POST["carYear"]);
$carEngine = trim($_POST["carEngine"]);
$carEngineVolume = trim($_POST["carEngineVolume"]);
$carMileage = trim($_POST["carMileage"]);
$question = trim($_POST["question"]);
$message = "
Имя: $name \n
Телефон: $phone
Файл: $file \n
Марка: $carTitle \n
Модель: $carModel \n
Год: $carYear \n
Двигатель: $carEngine \n
Объём: $carEngineVolume \n
Пробег: $carMileage \n
Вопрос: $question \n
";
$pagetitle = "Заявка с сайта \"$siteName\"";
mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"\n From: $recepient");
Все работает, кроме файла. В файле значение
this.$refs.fileLoadInput.files[0];
В общем оно не пустое, но на почту ничего не приходит. Я еще попробовал к методу fetch добавить
headers: {
"Content-Type": "multipart/form-data",
},
но тогда на почту пришло вовсе все пустое. Как мне отправлять файл?