【发布时间】:2011-02-02 18:10:54
【问题描述】:
所以我有一些表单处理代码来处理标准文本输入和上传文件(通过 $_FILES 数组)
我想通过 AJAX 完成提交
将 jQuery 的 post().方法仍然通过 -> $_FILES 传递这些东西还是我需要做一些特别的事情?
【问题讨论】:
标签: php jquery ajax file upload
所以我有一些表单处理代码来处理标准文本输入和上传文件(通过 $_FILES 数组)
我想通过 AJAX 完成提交
将 jQuery 的 post().方法仍然通过 -> $_FILES 传递这些东西还是我需要做一些特别的事情?
【问题讨论】:
标签: php jquery ajax file upload
Ajax(定义为使用 JavaScript)无法执行文件上传,因为 JavaScript 无法访问本地文件系统。有一些似乎使用 Ajax 的解决方法,例如 iframe 或使用 Flash。
在 Google 上四处寻找,您会发现一些东西。有更多的库(例如 YUI)将这些放在一起。
【讨论】:
要通过 Ajax 上传文件,您需要使用 iframe 或 Flash 的解决方法。
我推荐你Uploadify,它使用flash进行上传,使用jQuery。我喜欢它有很多设置的事实,并且它带有一个很好的队列处理默认样式。只需按照说明在您的站点中进行设置即可。
在 PHP 脚本中,您将收到 $_FILES 数组中的文件,就像通过表单正常提交一样,默认名称为“Filedata”,因此您可以通过 $_FILES[' 访问您的文件文件数据']。然后只需回显 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 上是默认设置)。
可以检测到其中任何一个的存在并优雅地降级。
【讨论】: