是否有可能使用Ajax做file upload?

我不想使用jQuery,但我想使用Ajax做file upload。 那可能吗?

如果是这样,我可以在哪里find关于它的信息/教程?

不,使用javascript无法做到这一点。

但是,为了赋予“AJAX”的感觉,您可以将表单提交给隐藏的iframe,并将脚本结果输出到该框架,然后从中进行处理。 Google ajax iframe upload并从那里开始。

如果您使用的是jQuery,那么也有Form plugin ,如果您的表单中有任何文件字段,它将自动为您创build此iframe。 我没有用它来做这件事,但是我听到了好东西。

正如在评论中指出的那样,您也可以使用非常stream行的SWFUpload类的东西来实现Flash所需的效果。

任何人都可以在稍后发现这个问题:是的,现在可以用JavaScript了。

HTML5定义了两个新的API,一起使用来实现这一点:拖放API和File API。 您可以使用jQuery与API进行交互,从而有效地让人们拖放文件进行上传。

这里是如何做到这一点的教程 。

该代码目前适用于Chrome 6+和Firefox 3.6 +,Safari 6和IE 10.如果您需要Safari 5支持,代码保持几乎完全相同,但您使用FormData对象代替上载的文件列表(更多信息请参阅后)。

Opera从11开始支持File API,但是不支持DnD API,这个放置操作不会启动上传,但是它们支持你通过API访问文件。 我想在12他们将完成对DnD API的支持。

01-20-14更新:所有主stream浏览器现在都实现了所有的标准API,因此本教程适用于所有浏览器。

我使用swfupload进行多个类似Ajax的上传(基于javascript / flash)

这里有一些关于gmail如何使用iframe的细节:

http://www.sajithmr.com/upload-files-like-gmail/

假设你正在使用Java,DWR 3.0版本(目前在RC1中)支持二进制file upload/下载,这使问题变得简单。 我还没有机会尝试这个,但我们广泛使用DWR,并取得了圆满的成功。 这是一个伟大的Ajax工具包。

http://directwebremoting.org/blog/joe/2008/12/16/dwr_version_3_0_release_candidate_1.html

严格地说,有可能做真正的AJAXfile upload ,但这只能在Firefox 3 +,Safari 4和Chrome 2中使用。在所有其他浏览器中,您必须使用类似iframe技术或基于Flash的上传器的解决方法。

没有亲自使用它,但Ajax Uploader是我最近遇到的一个组件,它说它可以在UpdatePanel内部进行file upload(假设你正在使用ASP.NET)。