Jquery 1.10 ajax 文件上传表单数据问题

Jquery 1.10 ajax file upload formdata issue

我知道这个问题被问了很多....但是 none 我遇到的答案很有帮助。 这是我以前做过很多次的事情......但是这次,我遇到了问题。

我正在尝试通过 ajax 上传 zip 文件,但不提交表单,只提交字段。我将文件附加到 formdata 对象...但 formdata 始终为空(在我通过 ajax 发送之前检查它)。 $_FILES 数组服务器端也始终为空。

谁能看出哪里出了问题,我试过很多变体... 如果我 console.log(jQuery("#file_import")[0].files[0]);我看到了文件数据。

                var fileInput = jQuery("#file_import")[0];
                var formData = new FormData();
                formData.append("zipfile",fileInput.files[0]);

                jQuery.ajax("/whatever/url", {
                    method: "POST",
                    data: formData,
                    dataType: "json",
                    cache: false,
                    contentType: false,
                    processData: false,
                    onSuccess: function(response){
                        alert("whatever...");
                    }
                });

提前致谢。 肖恩

当您说 "the formdata is always empty," 时,您是在尝试使用 formdata.entries() 还是在使用 formData.get('zipfile') 来检查它?我认为只有第二个会起作用。

编辑:这是我的确切代码,客户端和服务器端。

$(document).ready(function() {

    $('#start').click(function() {
        var fileInput = $("#file_import")[0];
        var formData = new FormData();
        formData.append("zipfile",fileInput.files[0]);

        $.ajax("test.php",{
            method: "POST",
            data: formData,
            cache: false,
            contentType: false,
            processData: false,
            success: function(response){
                $('#output').html(response);
            }
        });
    });


});

HTML:

<input type="file" id="file_import"/>
<button id="start">Start</button>
<div id="output">
</div>

PHP:

<?php

print_r($_FILES);
$t = $_FILES['zipfile'];

$date = new DateTime();
$d = $date->format('Y-m-d_H-i-s');

move_uploaded_file($t['tmp_name'], "asdf_$d.zip");

?>