繁体   English   中英

如何使用ajax上传文件?

[英]How to upload file using ajax?

HTML:

 <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中的演讲

我很确定我已经在formdata中定义了“演讲”,并将formdata传递给了php。 我在做错什么formData.append('lecture', $('#uploadlecture')[0].files[0]); ,是formData.append('lecture', $('#uploadlecture')[0].files[0]);formData.append('lecture', $('#uploadlecture')[0].files[0]); 正确?

几个月前,我遇到了同样的问题,并通过使用“ .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应用程序以嵌入到您的页面中来执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM