@Yula951

Как реализовать отправку файлов через форму PHP?

всем привет) сейчас делаю форму отправки на php, она работает, все данные улетают. но не получается реализовать прикрепление с последующей отправкой файлов..( не могу понять, что делаю не так. программированием стала заниматься не так давно, поэтому сильно не ругайте)) буду бесконечно благодарна, если кто подскажет)

вот код формы:
<form id="zakaz" action="" method="post" class="form" enctype="multipart/form-data">
...
<input type="file" name="your-file" accept=".jpg,.jpeg,.png,.gif,.pdf,.doc,.docx,.ppt,.pptx,.odt,.avi,.ogg,.m4a,.mov,.mp3,.mp4,.mpg,.wav,.wmv" />
...
</form>


код PHP:
<?php
$mailTo = ' ';
$mailFrom = ' ';
$successMsg = 'Сообщение отправлено!';
$fillMsg    = 'Пожалуйста, заполните все поля!';
$errorMsg   = 'Ошибка!';

?>
<?php
if(
    !isset($_POST['your-name']) ||
	!isset($_POST['your-phone']) ||
	!isset($_POST['your-email']) ||
	!isset($_POST['comment']) ||
    empty($_POST['your-name']) ||
    empty($_POST['your-phone']) ||
    empty($_POST['your-email']) ||
	empty($_POST['comment']) ||
	empty($_POST['agree'])
) {
	$json_arr = array( "type" => "error", "msg" => $fillMsg );
	echo json_encode( $json_arr );
} else {

    ?>
    <?php
 
    
    $subject = "Заявка от пользователя";
	$msg = "Имя: ".$_POST['your-name']."\r\n";
	$msg .= "Телефон: ".$_POST['your-phone']."\r\n";	
	$msg .= "Email: ".$_POST['your-email']."\r\n";
	$msg .= "Комментарий: ".$_POST['comment']."\r\n";

    $success = @mail($mailTo, $subject ." " .$_POST['your-name'], $msg, 'From: ' . $mailFrom  );
	
    if ($success) {
		$json_arr = array( "type" => "success", "msg" => $successMsg );
		echo json_encode( $json_arr );
    } else {
		$json_arr = array( "type" => "error", "msg" => $errorMsg );
		echo json_encode( $json_arr );
    }
    

}


и Ajax:
$("#Submitbtn2").on( "click", function(event) {
        event.preventDefault();
        var mydata = $("#zakaz").serialize();
        $.ajax({
            type: "POST",
            dataType: "json",
            url: "forms/.request2.php",
            data: mydata,
            success: function(data) {

            if( data["type"] == "error" ){
                    $("#zakaz").append('<div class="sended">Ваше сообщение успешно отправлено.</div>');
            },
            error: function(xhr, textStatus, errorThrown) {
            }
        });
        return false;
    });
  • Вопрос задан
  • 469 просмотров
Пригласить эксперта
Ответы на вопрос 3
motokraft
@motokraft
Кратко о себе
Вот хороший пример отправки файлов с помощью ajax, остальные данные формы добавляйте в объект FormData с помощью функции append
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
$("#Submitbtn2").on( "click", function(event) {

меняете на
$("#zakaz").on('submit', function(event) {
... 
var mydata = $(this).serialize();
$.ajax({
            type: "POST",
            dataType: "json",
            url: "forms/.request2.php",
            data: mydata,
            cache: false,
            contentType: false,
            processData: false,
...
})

где точками - код дополните, мне лениво...
Ответ написан
@zkrvndm
Софт для автоматизации
Для отправки файлов на сервер лучше всего использовать xhr в связке с FormData, о них обеих можете легко найти информацию в Яндексе. Если не получается разобраться, но надо отправить форму именно без перезагрузки страницы, то тогда можете использовать iframe. Отправленные файлы потом на сервере смотрите в глобальной переменной $_FILES.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы