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

标签 php jquery ajax file-upload

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

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.";
    }
}

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

最佳答案

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

不仅仅是这个:

var fd = new FormData();

使用它来提取任何非文件输入值(例如您的提交按钮。)

var fd = new FormData(this);

关于php - 无法使用 $ajax() 在 PHP 中上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58920220/

相关文章:

asp.net - UpdatePanel 中的 Gridview 不会在 DOM 中呈现

javascript - get() 请求中的条件

php - 创建的动态元素未发布

php - 如何对在mysql中存储为varchar的 float 价格值进行排序

javascript - PHP/MYSQL JavaScript - 将多个动态行的值插入文本字段

jquery - 在 Web 应用程序中实现类似 iPhone 的内容 slider

jquery - 使用 JQuery 在运行时更新数组值

php - 为什么总是使用 "while"循环来迭代 mysql_fecth_array() 函数结果?

php - 正确的单元测试

jQuery 添加事件监听器