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