【问题标题】:How to upload file using ajax?如何使用ajax上传文件?
【发布时间】:2015-08-08 20:54:53
【问题描述】:

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(上传.php):

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

好的,所以我正在尝试使用 ajax 上传文件(单击 div 而不是使用提交表单的东西)。我已经让 jQuery 使用键“lecture”将文件数据附加到 formdata。目前upload.php 脚本只有一行来回显文件名。但是,当 ajax 运行并调用 upload.php 时,出现以下错误:

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

我很确定我已经在表单数据中定义了“讲座”并将表单数据传递给 php.ini。我做错了什么吗?formData.append('lecture', $('#uploadlecture')[0].files[0]); 行是否正确?

【问题讨论】:

标签: javascript php jquery ajax file-upload


【解决方案1】:

几个月前我遇到了同样的问题,并通过使用“.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(){

            }
        });

【讨论】:

  • 感谢您的快速回答! fileElementId 不是“uploadlecture”而不是 fileToUpload1 吗?
  • 据我了解,这是您的输入文件的名称,将在您上传的 php 帖子中使用,但如果这不起作用,请尝试将其更改为“uploadlecture”
  • 好的。我得到:未捕获的 TypeError:jQuery.ajaxFileUpload 不是函数
  • 对不起,我忘了告诉你在你的项目中输入插件,我现在找不到我下载它的链接,但我在我的本地有它,我只是不知道如何分享给你。或者你可以建议
  • 嗯,好的。我知道了。那我会得到一个ajax文件上传插件。感谢您的帮助!
【解决方案2】:

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

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

发件人:How can I upload files asynchronously?

您可以从 jQuery 的插件站点搜索更多内容。

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

您也可以使用 javascript 的文件 API,但并非所有浏览器都支持。在这里查看:https://developer.mozilla.org/en/docs/Web/API/File

编辑: 如果您想变得更高级,您可以开发一个 JAVA 或 SWF 应用程序嵌入到您的页面中来做到这一点。

【讨论】:

  • 谢谢!这些插件会显着影响网页加载时间吗?
  • 一点也不。您可以下载这些插件的源代码并检查与它们关联的 .js 文件的大小。我认为它们没有那么大
猜你喜欢
  • 2015-09-24
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 1970-01-01
  • 2013-09-06
  • 2020-01-04
相关资源
最近更新 更多