如何在没有表单提交的情况下轻松上传文件(使用jQuery + AJAX)

所以我有一些表单处理代码处理标准文本输入和上传文件(通过$ _FILES数组)

我希望通过AJAX完成提交

请问jQuery的post()。 方法仍然通过 – > $ _FILES传递那些东西还是我需要做一些特别的事情?

Ajax(使用JavaScript定义)无法执行文件上载,因为JavaScript无法访问本地文件系统。 有一些似乎使用Ajax的解决方法,例如iframe或使用Flash。

在谷歌周围寻找,你会找到一些东西。 有更多的库(例如YUI)将它们组合在一起。

要通过Ajax上传文件,您需要使用iframe或Flash来解决方法。

我建议你使用Uploadify ,它使用flash进行上传,并使用jQuery。 我喜欢它有很多设置的事实,并且它为队列处理提供了一个很好的默认样式。 只需按照说明在您的网站中进行设置即可。

在PHP脚本中,您将收到$ _FILES数组中的文件,就像通过表单进行正常提交一样,默认名称为’Filedata’,因此您可以通过$ _FILES [‘Filedata’]访问您的文件。 然后只需回显Ajax请求(JSON或XML)的响应,并为Uploadify’onComplete’事件执行一些JS代码。

您可以尝试使用HTML 5的文件上传API,这需要将文件拖放到浏览器窗口中。 在这里阅读更多内容: http : //www.appelsiini.net/2009/10/html5-drag-and-drop-multiple-file-upload

此外,您可以使用Google Gears执行相同操作(需要安装IE,但默认情况下为Chrome)。

可以检测其中任何一个的存在并优雅地降级。