PHP 图片/文件上传:跨浏览器,多文件,拖放?

4

在2012年,我从未想到使用PHP上传图片会导致这么多问题。

我的要求是:

  • 多文件上传
  • 跨浏览器功能
  • 考虑安全问题
  • 尽可能少添加插件或扩展
  • 支持拖放(至少会更好)

对我来说,可用的选择似乎有:

  1. 使用PHP(如GD库)进行简单的单个文件上传(或几个单个文件输入),但仍需手动选择每个图像

    (+) 优点:完全跨浏览器功能,不依赖于Flash、JavaScript、HTML5或任何其他插件等,具有最大的可定制性

    (-) 缺点:用户体验较差,不支持多个文件、不支持拖放等

  2. 妥协方案,例如使用jquery

    按照许多帖子和其他网站的推荐,可以查看此链接,例如:http://blueimp.github.com/jQuery-File-Upload/

    (+) 优点:支持多个文件上传,甚至支持拖放功能以及其他适用于大多数Firefox、Chrome、Safari的出色功能(有关详细信息,请参见链接)

    (-) 缺点:仅适用于单个文件选择,IE不支持拖放功能(由我个人测试过的IE6-IE8)

  3. HTML5:浏览器市场份额似乎不允许仅依赖于HTML5,但仍然...

  4. 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个不同的上传器,每个都针对特定的浏览器/插件可用性进行优化?

非常感谢您的帮助!


给你的第一个问题点赞!(y) - Smile
1个回答

2
看起来您做了相当彻底的研究。我几周前也遇到过类似的难题。至于Google Docs的参考资料,我很想看看,因为我从未找到过类似的东西。如果您的网站面向年轻受众,我建议使用jQuery选项,并向IE用户显示Firefox或Chrome的浏览器推荐。对于更年长的用户群体,可以选择Flash,因为他们更可能使用IE。

不幸的是,我并没有发现真正的优胜者。但是,至少通过使用jQuery选项,您可以避免使用Flash,并有可能在将来版本的IE中使用它。随着HTML5的出现,Flash正在迅速消失(好事)。现在只要IE也能这样就好了。我是说,即使在IE9中,他们甚至都无法与竞争对手在标准合规方面相提并论?这太荒谬了。


真的看起来这是唯一的选择...就像你说的,荒谬! :) - Chris
1
不是要贬低你的回答pthurmond,但我认为这不应该被标记为答案。很多人会对这个常见问题的解决方案感兴趣,正如你所说,谷歌似乎有他们使用的解决方案。我很想看看其他人有什么建议。 - MgSam
我想指出,Google似乎非常擅长在需要良好用户效果的地方悄悄地集成Flash的一些部分。如果Google能够发布关于他们如何完成某些事情的白皮书,那将是很好的。但我同意我的回答并不是一个很好的回答。更多的是指出事物的现实情况。我希望我能给你更多的帮助。 - Patrick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接