我正在开发一个 Web 应用程序。用户可以在一处使用 HTTP 协议上传文件。可以在经典的 HTML 文件上传控件和用于上传文件的 Java 小程序之间进行选择。
经典的 HTML 文件上传不是很好,因为您一次只能选择一个文件,并且在实际上传期间很难获得任何进度指示(我最终使用计时器刷新进度指示器并从服务器通过 AJAX 调用)。优点:它总是有效的。
使用 Java 小程序,我可以做更多的事情:一次选择多个文件(甚至是一个文件夹)、压缩文件、获得真正的进度条、在小程序上拖放文件等等......
但是有一些缺点:
- 让它在 Mac Safari 和 Mac Firefox 上正常工作是一场噩梦(感谢 Liveconnect)
- UI 并不完全是原生 UI,有些人注意到
- 小程序没有应有的响应(可能是我的错,但对我来说一切正常)
- HTTPS的 Java 类存在 bug
UrlConnection
,所以我使用 Apache 通用 HTTP 客户端进行实际的 HTTP 上传。这是一个相当大的包,会减慢 .jar 文件的下载速度 - Apache 通用 HTTP 客户端有时无法通过代理
- Java 运行时相当大
我一直在维护这个 Java 小程序一段时间,但现在我厌倦了所有的缺点,并考虑编写/购买一个全新的组件来上传这些文件。
问题
如果您有以下要求:
- 通过 HTTP 或 HTTPS 从浏览器轻松上传多个文件
- 压缩文件以减少上传时间
- 上传应该可以在任何平台上使用本机 UI
- 必须能够上传大文件,至少2gb
- 你对技术有全权委托
你会使用什么技术/组件?
编辑 :
- 在组件上拖放文件将是一个很好的加分项。
- 看起来有很多与 Flash Player 错误相关的问题(swfupload known issues)。适当的 Mac 支持和通过具有身份验证的代理上传是我不能没有的选项。这可能会排除所有基于 Flash 的选项 :-( 。
- 我排除了所有 HTML/Javascript-only 选项,因为您不能使用经典 HTML 控件一次选择多个文件。当您想在一个文件夹中选择多个文件时,单击 n 次“浏览”按钮会很痛苦。