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

IT技术 javascript jquery ajax upload
2021-01-29 23:33:20

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

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

6个回答

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

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

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

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

虽然我也认为 iframe 方法是最好的方法,但我想指出的是,对于支持 FileReader API 的浏览器,还有另一种可能性。我在这里写了一些代码:stackoverflow.com/questions/2338711/...至少在 mozilla 上使用 XMLHttpRequest 你甚至可以获得上传进度!
2021-03-21 23:33:20
您也可以使用silverlight。
2021-03-27 23:33:20
说得很好,我会在报告中引用它:)
2021-03-29 23:33:20
我只有 1 个问题,如果 jquery 在 iframe 中执行表单提交,我想知道他是如何在没有进度条的情况下做到的?任何 iframe 提交都在父页面中显示进度条????我需要知道如何在 iframe 中提交表单而不显示进度条
2021-04-08 23:33:20

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

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

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

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

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

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

来自未来的感谢。(2020)
2021-04-02 23:33:20

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

这不傻!实际上它很棒。学习的唯一途径。有趣的部分是学习。;)
2021-03-12 23:33:20
我很沮丧,我只是有点坚持重新发明轮子并自己做,至少是第一次。我知道这很愚蠢,但我就是那种需要这样做的人;)
2021-03-15 23:33:20

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

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

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

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