【发布时间】:2009-02-24 15:11:48
【问题描述】:
我正在开发一个网络应用程序。用户可以在一处使用 HTTP 协议上传文件。可以在经典的 HTML 文件上传控件和用于上传文件的 Java 小程序之间进行选择。
经典的 HTML 文件上传不是很好,因为您一次只能选择一个文件,并且在实际上传期间很难获得任何进度指示(我终于使用计时器刷新了带有数据的进度指示器通过 AJAX 调用从服务器获取)。优点:它始终有效。
使用 Java 小程序,我可以做更多事情:一次选择多个文件(甚至是一个文件夹)、压缩文件、获得真正的进度条、在小程序上拖放文件等...
但也有一些缺点:
- 让它在 Mac Safari 和 Mac Firefox 上正常工作是一场噩梦(感谢 Liveconnect)
- UI 并不完全是原生 UI,有些人注意到
- 小程序没有应有的响应(可能是我的错,但在我看来一切正常)
- 使用HTTPS的Java
UrlConnection类存在bug,所以我使用Apache通用HTTP客户端进行实际的HTTP上传。这是一个相当大的包,会减慢 .jar 文件的下载速度 - Apache 通用 HTTP 客户端有时无法通过代理
- Java 运行时很大
我一直在维护这个 Java 小程序,但现在我已经厌倦了所有的缺点,并考虑编写/购买一个全新的组件来上传这些文件。
问题
如果您有以下要求:
- 通过 HTTP 或 HTTPS 从浏览器轻松上传多个文件
- 压缩文件以减少上传时间
- 上传应该可以在任何平台上使用原生 UI
- 必须能够上传大文件,至少达到 2gb
- 您对这项技术拥有全权委托
您会使用什么技术/组件?
编辑:
- 在组件上拖放文件将是一大优势。
- 看起来有很多与 Flash Player 错误相关的问题 (swfupload known issues)。适当的 Mac 支持和通过具有身份验证的代理上传是我不能没有的选项。这可能会排除所有基于 Flash 的选项 :-( .
- 我排除了所有 HTML/Javascript-only 选项,因为您不能使用经典 HTML 控件一次选择多个文件。当您想在一个文件夹中选择多个文件时,单击 n 次“浏览”按钮会很痛苦。
【问题讨论】:
-
可恢复上传怎么样?这对我来说似乎真的很重要。没有人喜欢在几个小时后重新开始上传失败的文件。
-
没错,在那种情况下,我认为您仍然不能使用 Flash,只能使用 Java(和 Silverlight?)
-
您好,另一个基于 Flash 的上传器位于 digitarald.de/project/fancyupload
标签: java flash silverlight http upload