是否可以使用Ajax进行文件上传?

时间:2009-02-12 23:05:06

标签: javascript jquery ajax upload

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

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

7 个答案:

答案 0 :(得分:39)

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

然而,为了给出'AJAX'的感觉,您可以将表单提交给隐藏的iframe并将脚本结果输出到它,然后从那里处理。 Google ajax iframe upload并从那里开始。

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

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

答案 1 :(得分:31)

任何人都可以在很久之后找到这个问题:是的,现在可以使用JavaScript。

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

以下是关于如何操作的a tutorial

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

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

严格来说,有可能real AJAX file uploads,但这只适用于Firefox 3 +,Safari 4和Chrome 2.在所有其他浏览器中,您必须使用iframe技术或基于Flash的上传器等变通方法

答案 5 :(得分:1)

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

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

答案 6 :(得分:0)

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

相关问题