Отправить данные с формы + аттачмент
Нужна помощь, в jQuery я скорее -1, чем даже 0. Только начинаю. Проблема такая - на сайте есть кнопка "Заказать", при нажатии на которую открывается форма для заполнения контактной информации, после заполнения клик на кнопку "Ок" и данные с формы + аттачмент с сайта должен уходить мне на почту в виде письма. Так вот аттачмент отправить удалось, а данные с формы он не забирает. Что исправить?
JS:
$btnConfirm.on('click', () => {
var imageName = imageEditor.getImageName();
var dataURL = imageEditor.toDataURL();
var blob, type, w;
blob = base64ToBlob(dataURL);
type = blob.type.split('/')[1];
if (imageName.split('.').pop() !== type) {
imageName += '.' + type;
}
let d = new FormData(my_form);
d.append('file', blob, imageName);
$.ajax({
url: '/veido_pats/post.php',
type: 'post',
data: d,
processData: false,
contentType: false,
success: function(msg){
$('#my_form').hide('slow');
$('#my_message').html(msg);
}
});
return false;
});
PHP Обработчик:
<?php
$email = trim($_POST['email']);
$client_name = trim($_POST['client_name']);
$surname = trim($_POST['surname']);
$phone = trim($_POST['phone']);
move_uploaded_file(
$_FILES['file']['tmp_name'],
$_SERVER['DOCUMENT_ROOT']."/".$_FILES['file']['tmp_name'].".png"
);
$to = '[email protected]';
// Email subject
$subject = 'Veido-pats pasūtījums';
// Attachment file
$file = $file = $_SERVER['DOCUMENT_ROOT']."/".$_FILES['file']['tmp_name'].".png";
// Email body content
$message = "<b>Vārds:</b> $client_name \r\n<b>Uzvārds:</b> $surname \r\n<b>E-pasts:</b> $email \r\n<b>Telefona nr.:</b> $phone\r\n";
// Header for sender info
$headers = 'From: '. $email . "\r\n"; // от кого
$headers = "Content-type: text/html; charset=utf-8\r\n";
//$headers = "From: $fromName"." <".$from.">";
//$headers = "Content-type: text/html; charset=utf-8\r\n";
// Boundary
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
// Headers for attachment
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
// Multipart boundary
$message = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" . $htmlContent . "\n\n";
// Preparing attachment
if(!empty($file) > 0){
if(is_file($file)){
$message .= "--{$mime_boundary}\n";
$fp = @fopen($file,"rb");
$data = @fread($fp,filesize($file));
@fclose($fp);
$data = chunk_split(base64_encode($data));
$message .= "Content-Type: application/octet-stream; name=\"".basename($file)."\"\n" .
"Content-Description: ".basename($file)."\n" .
"Content-Disposition: attachment;\n" . " filename=\"".basename($file)."\"; size=".filesize($file).";\n" .
"Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
}
}
$message .= "--{$mime_boundary}--";
$returnpath = "-f" . $from;
// Send email
$mail = @mail($to, $subject, $message, $headers, $returnpath);
echo $mail.'Paldies! Pasūtījums saņemts! Ar Jums sazināsies tuvākajā laikā!'
?>
Ответы (1 шт):
Автор решения: n.osennij
→ Ссылка
При условии, что форма enctype="multipart/form-data"
$("#formID").submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
url: window.location.pathname,
type: 'POST',
data: formData,
success: function (data) {
alert(data)
},
cache: false,
contentType: false,
processData: false
});
});