无法使用$ ajax()在PHP中上传文件

时间:2019-11-18 17:43:10

标签: php jquery ajax file-upload

我试图使用带有jQuery的ajax()函数的php在服务器上上传文件。下面是我正在尝试的代码。当我在没有jQuery的情况下在同一页上编写PHP代码时,一切工作正常,因此毫无疑问文件上传正常。

HTML


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
    $(function() {
        $("form").submit(function(e){
            e.preventDefault();

            var fd = new FormData();    
            fd.append("files", $("#fileinput").prop("files"));
            $.ajax({
                url: "imgupload_.php", 
                type:"POST",
                processData: false,
                contentType: false,
                data: fd,
                success: function(result){
                    alert(result);
                }
            });
        });
    });
</script>
<form method="POST" action="#" enctype="multipart/form-data">
    <input type='file' name='files' id="fileinput"/>
    <input type='submit' value='Submit' name='submit'/>
</form>

imgupload_.php

if(isset($_POST["submit"])) {
    $target_dir = "images/";
    $target_file = $target_dir . basename($_FILES["files"]["name"]);

    if (move_uploaded_file($_FILES["files"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["files"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}

如果您需要其他任何信息,请在下面评论。

1 个答案:

答案 0 :(得分:2)

您正在检查if(isset($_POST["submit"])),但尚未设置。

不仅仅是这个:

var fd = new FormData();

使用此按钮可拉入任何非文件输入值(例如,提交按钮)。

var fd = new FormData(this);