Ajax 文件上传

Posted

技术标签:

【中文标题】Ajax 文件上传【英文标题】:Ajax file upload 【发布时间】:2010-12-26 15:43:19 【问题描述】:

我有一个上传文件的表单,我会使用 ajax 内联处理文件,但我不知道如何使用 ajax 获取数据。

在我的脚本中我使用这种方法:

 $.ajax(
            
                type:    "POST",
                url:     "upload.php",
                data:    ( file : '???' ),
                success: function(msg)
                
                    $('#upload_box').html(msg);
                
            );

如何声明获取文件数据的“文件”变量? (文件名、tmp_name、类型、大小等)。

【问题讨论】:

你看过 Uploadify 吗?这就是我用于文件上传的内容。非常简单易用。 我更喜欢使用Ajax脚本,而不是flash脚本...我需要制作一个类似gmail的头像脚本,现在我可以用上面描述的方法处理表单,我希望我也可以使用 ajax 处理 FILE 数据... 是jQuery结合flash。该文件通过闪存上传到服务器 TMP 文件夹。从那里 jQuery 调用你whatever.php 文件,你可以在那里处理其余的。她可以获取文件信息、大小等。 【参考方案1】:

您无法使用标准 AJAX 请求来执行此操作。最常见的解决方法是将文件发布到隐藏的 iFrame,如 this tutorial 所示。

由于您使用的是 jQuery,您可能会发现 AJAX Upload 库很有用。

【讨论】:

【参考方案2】:

您可以将文件上传到服务器,调用 php 脚本将其读回给您,然后将其转储到您想要读取的任何标签中

            //In your onUpload callback
            var req = createRequest();
            req.open("GET", 'upload.php?file=' + filename,true);

            req.send(null);
            //Do your status checking
            var filetext= req.responseText;

框架并不能解决所有问题,如果您使用的是需要变通的框架,您应该回归基础,因为这可以使用带有一些 PHP 的 vanilla javascript 来完成。

【讨论】:

需要解决的不是框架,而是基本的 HTML 行为。您目前无法在 XHR 中上传文件。 XHR (XMLHTTPRequest) 不是 HTML 行为。它的Javascript。我使用 javascript 和 php 即时创建文件,然后为我的所有 cmets 读回文件,这几乎相同,只是您需要等待文件从临时区域移动到服务器上的最终区域。如果您想了解更多信息,请提出问题并让我知道它在哪里,我会为您发布一些代码。 应该说Http行为。事实上,它比javascript低了一点。大多数浏览器通过 js 提供 API,但 IE 5-6 将其实现为 ActiveX 对象。我的意思是这不是 js 框架问题。【参考方案3】:

我已经用 Jquery 表单插件 (http://malsup.com/jquery/form/) 解决了

【讨论】:

以上是关于Ajax 文件上传的主要内容,如果未能解决你的问题,请参考以下文章

JQuery 之 ajax上传文件 与 原生ajax 上传文件

文件的上传(表单上传和ajax文件异步上传)

AJAX文件上传实践与分析,带HTML5文件上传API。

上传文件ajax上传文件

ajax上传文件是怎么实现的

我用WebService 上传文件 想用ajax方法发送提交的文件请求 能做到吗??