Jquery 1.10 ajax文件上传formdata问题

时间:2016-04-11 21:58:40

标签: jquery ajax file-upload form-data

我知道这已经被问了很多......但是我遇到的答案都没有帮助。 这是我以前做过很多次的事情......但是在这个场合,我遇到了一个问题。

我正在尝试通过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...");
                    }
                });

提前致谢。 肖恩

1 个答案:

答案 0 :(得分:1)

当你说" formdata总是空的时候,"您是要尝试使用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");

?>