提问者:小点点

如何使用ajax上传文件?


超文本标记语言:

 <form id="confirmresourceform" enctype="multipart/form-data" method="post" style="display: none;">
              <input id="uploadlecture" name="fileToUpload1" type="file" value="Upload Resources"/>
           </form>

Javascript/Jquery/Ajax:

$("#submitchanges").on("click",function(){
    //Upload files
    var formData = new FormData(document.getElementById("confirmresourceform"));
    formData.append('lecture', $('#uploadlecture')[0].files[0]);
    $.ajax({
        type: 'POST',
        url: 'upload.php',
        contentType: false, 
        processData: false,
        data: formData,
         success: function (data) {
           console.log(data);
         }
    });
});

PHP(upload.PHP):

echo $_FILES['lecture']['name'];

好的,所以我尝试使用ajax上传一个文件(点击div而不是使用提交表单)。我已经得到jQuery附加文件数据到formdata与关键'讲座'。目前,upload.php脚本有一行与文件名相呼应。但是,当ajax运行并调用upload.php时,我得到以下错误:

未定义索引:讲座在C:\wamp\www\TheClass\lesson_creator_page\upload.php上线4

我很确定我已经在formdata中定义了“讲座”,并将formdata传递给了php。有什么我做错了,行formData.append('演讲', $('#上传演讲')[0]。文件[0]);正确吗?


共2个答案

匿名用户

几个月前,我也遇到了同样的问题,并通过使用". ajaxFileUpload"执行以下操作来解决它:

在jquery中,集合如下所示:

jQuery.ajaxFileUpload({
            url             : "upload.php",
            secureurl       : false,
            fileElementId   : "fileToUpload1",
            dataType        : 'json',
            data            : {
               // if you have another data to pass in your phhp     
            },
            success : function ()
            {

             },
            error  : function(){

            }
        });

匿名用户

网上有很多关于这方面的文献。

使用Ajax进行文件上传的最佳方法是使用插件。这里有几个供你考虑:

发件人:如何异步上载文件?

  • 多文件上传插件

您可以从jQuery的插件网站搜索更多信息。

如果你不想使用插件,那么最好的办法就是使用iFrame。

你也可以使用javascript的文件API,但不是所有浏览器都支持。检查这里:https://developer.mozilla.org/en/docs/Web/API/File

编辑:如果你想变得更喜欢,你可以开发一个JAVA或SWF应用程序来嵌入到你的页面中。