Ajax FormData文件上传不起作用[JQuery][PHP]


Ajax FormData file upload not working [JQuery] [PHP]

由于某种原因,我的上传表单无法工作,当我提交表单时,PHP文件会运行,而我的$_FILES变量为空。我已经被困了好几个小时了,我觉得我已经浏览了这个网站上的每一篇帖子,我只是不明白出了什么问题。

HTML

    <form id="uploadform" name="uploadform" method="POST" enctype="multipart/form-data">
      <input id="realupload" name="realupload" type="file" multiple/>
      <input id="uploadsubmit" type="submit" value="upload"/>
</form>

JQuery

$('#uploadsubmit').click(function(e)
{
    e.preventDefault();
        $.ajax({
            type: "POST",
            url: "upload.php",
            data: function(){
                alert("test");
                var data = new FormData();
                data.append("realupload", jQuery("#realupload").get(0).files[0]);
                return data;
            }
            ,
            processData:false,
            contentType: false,
            cache: false,
            success: function(theData){
                $('#innercontent').html(theData);
            },
            error: function() {
                $('#innercontent').html("ERROR, HELP");
            }
        });
    } 
});

PHP(upload.PHP)

<?php
//upload.php
if (isset($_FILES["realupload"]))
{
    echo "SUCCESSFUL UPLOAD " . $_FILES["realupload"]["error"];
}
else{
    echo "FILES NOT SET";
}
?>
  • PHP文件只是一个测试文件,用于检查上传是否有效
  • 每次都输出FILES NOT SET
  • ajax数据函数内部的警报没有运行,我不确定它是否应该运行
  • 正在尝试创建多文件上传程序

这可能与服务器有关吗?那里已经上传了一个论坛,它本身就允许上传,所以我不认为是这样,但我不确定。

谢谢!

编辑:伙计们,谢谢你们的链接,但你们现在可以用HTML5和XmlHttpRequest2对象上传文件了,我正在努力解决这个问题。

只需从中使用新的jquery库jquery-2.1.1.min.jshttp://jquery.com/download/

它一定能解决你的问题。几天前,我遇到了同样的问题,所以我尝试了上面的库,它确实对我有效。

您不能通过ajax发送文件,您必须直接使用PHP才能发送。