在2012年,我从未想到使用PHP上传图片会导致这么多问题。
我的要求是:
- 多文件上传
- 跨浏览器功能
- 考虑安全问题
- 尽可能少添加插件或扩展
- 支持拖放(至少会更好)
对我来说,可用的选择似乎有:
使用PHP(如GD库)进行简单的单个文件上传(或几个单个文件输入),但仍需手动选择每个图像
(+) 优点:完全跨浏览器功能,不依赖于Flash、JavaScript、HTML5或任何其他插件等,具有最大的可定制性
(-) 缺点:用户体验较差,不支持多个文件、不支持拖放等
妥协方案,例如使用jquery
按照许多帖子和其他网站的推荐,可以查看此链接,例如:http://blueimp.github.com/jQuery-File-Upload/
(+) 优点:支持多个文件上传,甚至支持拖放功能以及其他适用于大多数Firefox、Chrome、Safari的出色功能(有关详细信息,请参见链接)
(-) 缺点:仅适用于单个文件选择,IE不支持拖放功能(由我个人测试过的IE6-IE8)
HTML5:浏览器市场份额似乎不允许仅依赖于HTML5,但仍然...
Flash:我发现许多基于flash的上传程序,但在测试时,很多都没有实现其声称的内容(例如选择多个文件和跨浏览器功能)。 我找到了两个有用的示例:
http://www.uploadify.com/demos/ http://code.google.com/p/swfupload/ (有关演示,请参见http://demo.swfupload.org/v220/)
(+) 优点:这些提到的支持多文件上传
(-) 缺点:不支持拖放功能,依赖于Flash插件,并且我不是安全专家,也不熟悉Flash,但是swfupload的文档例如说明它们无法/不检查上传的Mime-Type并且完全依赖于检查文件扩展名)
然而,我发现有说法,例如Google文档使用基于非Flash的多文件上传,但仍在IE中工作。 有人知道他们是如何做到的吗?
我的另一个问题是:我是否错过了机会?这些是所有更好的选项吗?是否有任何非基于Flash的方式,至少在IE(至少v8)中支持多文件上传?你们是如何做到的?或者说,真的只能等待并期望HTML5的突破,现在要有5个不同的上传器,每个都针对特定的浏览器/插件可用性进行优化?
非常感谢您的帮助!