26

我不想使用 jQuery,但我想使用 Ajax 进行文件上传。那可能吗?

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

4

7 回答 7

39

不,不可能用 javascript 做到这一点。

但是,为了给人一种“AJAX”的感觉,您可以将表单提交到隐藏的 iframe 并将脚本结果输出到它,然后从那里进行处理。谷歌ajax iframe upload并从那里开始。

如果您使用的是 jQuery, Form plugin如果您的表单中有任何文件字段,它也会自动为您创建这个 iframe。我没有用它来做这件事,但我听说过好东西。

正如评论中所指出的,您还可以使用非常流行的东西SWFUpload来实现 Flash 所需的效果。

于 2009-02-12T23:05:59.397 回答
31

万一有人在很久以后才发现这个问题:是的,现在 JavaScript 可以做到这一点。

HTML5 定义了 2 个新的 API,您可以一起使用它们来完成此操作:拖放 API 和文件 API。您可以使用 jQuery 与 API 进行有效交互,让人们拖放文件以进行上传。

这是有关如何执行此操作的教程。

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

Opera 从 11 开始支持 File API,但不支持 DnD API,drop 操作不会启动上传,但它们支持您使用 API 访问文件。我想他们将在 12 年完成对 DnD API 的支持。

2014 年 1 月 20 日更新:所有主流浏览器现在都实现了所有标准 API,因此本教程适用于所有浏览器。

于 2011-06-23T19:29:59.510 回答
2

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

于 2009-02-12T23:14:53.150 回答
1

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

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

于 2009-02-12T23:09:26.643 回答
1

严格来说,有可能进行真正的 AJAX 文件上传,但这仅适用于 Firefox 3+、Safari 4 和 Chrome 2。在所有其他浏览器中,您必须使用 iframe 技术或基于 Flash 的上传器之类的解决方法。

于 2009-02-15T21:56:55.190 回答
1

假设您使用的是 Java,DWR 3.0 版(目前在 RC1 中)支持二进制文件上传/下载,这使问题变得非常简单。我还没有机会尝试这个,但我们广泛使用 DWR 并取得了完全的成功;它是一个很棒的 Ajax 工具包。

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

于 2009-03-23T17:57:59.643 回答
0

没有亲自使用过,但Ajax Uploader是我最近遇到的一个组件,它说它可以在 UpdatePanel 内进行文件上传(假设您使用的是 ASP.NET)。

于 2009-02-12T23:08:16.037 回答