Добрый день.
Есть форма:
<form id="f_job" class="mod_f" method="POST" enctype="multipart/form-data">
<input id="file_input" class="chose_file_input" name="file" type="file" />
<input type="submit" value="Отправить">
</form>
Есть обработчик:
$('form#f_job').submit(function(event){
event.preventDefault();
var formNm = $('#f_job');
$.ajax({
url: "/mail.php",
type: "post",
dataType: "html",
data: formNm.serialize(),
success: function(data){
console.log(data);
},
});
});
Ну и сам mail.php:
$method = $_SERVER['REQUEST_METHOD'];
$c = true;
if ( $method === 'POST' ) {
$project_name = "1";
$admin_email = "2";
$form_subject = "3";
$picture = "";
if (!empty($_FILES['file']['tmp_name']))
{
$path = $_FILES['file']['name'];
if (copy($_FILES['file']['tmp_name'], basename($_FILES['file']['name']))) $picture = $path;
}
foreach ($_POST as $key => $value) {
//создаем сообщение
}
$message = "<table style='width: 100%;'>$message</table>";
if (!empty($_FILES['file']['tmp_name'])) {
mail_to($picture, $admin_email, "1", $message);//если форма с файлом
}
else {
mail_to($picture, $admin_email, "0", $message);//если форма без файла
}
}
function mail_to($file_name, $mail_to, $file, $text) {
$message = $text;
$boundary = "--".md5(uniqid(time()));
$mailheaders = "MIME-Version: 1.0;\r\n";
$mailheaders .="Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$multipart = "--$boundary\r\n";
$multipart .= "Content-Type: text/html; charset=windows-1251\r\n";
$multipart .= "Content-Transfer-Encoding: base64\r\n";
$multipart .= "\r\n";
$multipart .= chunk_split(base64_encode(iconv("utf8", "windows-1251", $message)));// первая часть само сообщение
if ($file == "1") {
$filepath = $file_name;// месторасположение файла
// Закачиваем файл
$fp = fopen($filepath,"r");
if (!$fp)
{
echo "Не удается открыть файл";
exit();
}
$file = fread($fp, filesize($filepath));
fclose($fp);
// чтение файла
$message_part = "\r\n--$boundary\r\n";
$message_part .= "Content-Type: application/octet-stream; name=\"$filename\"\r\n";
$message_part .= "Content-Transfer-Encoding: base64\r\n";
$message_part .= "Content-Disposition: attachment; filename=\"$filename\"\r\n";
$message_part .= "\r\n";
$message_part .= chunk_split(base64_encode($file));
$message_part .= "\r\n--$boundary--\r\n";
// второй частью прикрепляем файл, можно прикрепить два и более файла
$multipart .= $message_part;
}
mail($mail_to,$subject,$multipart,$mailheaders);
}
Текст отправляется, файл нет. Мое мнение, что файл на сервер не грузится. Подскажите, что не так.