【发布时间】:2011-07-28 09:54:25
【问题描述】:
如何选择多个文件进行上传:
【问题讨论】:
标签: php javascript html file-upload upload
如何选择多个文件进行上传:
【问题讨论】:
标签: php javascript html file-upload upload
这取决于浏览器。较新版本的 firefox 和 chrome 支持这一点,因为它们开始实现 HTML5 规范。这是语法:
<input type="file" multiple=""/>
Firefox >= 3.6、Chrome >= 2、Safari >= 4 支持多文件输入。
对于较旧的浏览器,唯一好的解决方案是 Flash 或 javascript 插件。 这是 jquery 上传者的一个很好的资源(有些支持多个文件):http://creativefan.com/10-ajax-jquery-file-uploaders/
【讨论】:
在 HTML5 中,您可以在 <input type="file"> 上设置 multiple attribute。这适用于支持 HTML5 的浏览器。
<input type="file" name="upload" multiple="multiple" />
在 HTML4 中,最好的选择是 Flash 或 Java Applet。有第 3 方库可用,例如 Uploadify、SWFupload、JUpload 和 JumpLoader。
【讨论】:
此时我肯定会使用新的 HTML5 “multiple”属性:
<input type="file" name="upload[]" multiple="multiple" />
唯一可行的选择是像 swfupload 这样的 FLASH 插件。
但是 - 使用 FLASH 进行上传存在多个问题,对我来说主要的问题是 cookie 错误:
FLASH 插件无法正确发送 cookie。每个浏览器都有自己的 cookie 存储。FLASH 总是从 IE 发送 cookie,即使您使用 Google Chrome 也是如此。 - 结果是您丢失了 cookie 和会话。有一个解决方法 - 但它要求您将会话 ID 作为 GET 或 POST 参数发送,这反过来会使您的网站容易受到会话固定的影响。
【讨论】:
您还可以使用 javascript 插件,例如:http://code.google.com/p/noswfupload/
【讨论】:
多次使用文件输入表单元素,给它一个不同的名称,并且您在一个页面上有多个上传字段。无需学习其他任何东西。
【讨论】:
【讨论】:
没有 html/javascript 解决方法。您必须使用 flash 或 java 才能做到这一点。
【讨论】:
正如其他人所说,您必须使用 Flash 才能进行多次上传。 uploadify 的替代方法是SWFUpload。
【讨论】:
Flash 是除 HTML5 之外的唯一选择。
【讨论】: