【问题标题】:Fast uploading setting in web environmentWeb环境下的快速上传设置
【发布时间】:2012-01-26 15:03:33
【问题描述】:

我必须找到将大型内容 (10GB+) 上传到远程服务器的解决方案。上传者应由网页管理。

在搜索互联网时,我没有找到任何可靠的解决方案(或至少是概念),所以我想出了这些方案。你能提供任何反馈吗?

目前市场上常见的解决方案:

  1. 带有帖子表单的 Http 上传(因速度和内容大小而弃用);
  2. Flash 上传器 - 创建一个 ftp 客户端,并将内容传送到服务器;
  3. Flash 上传器 - 基于套接字的传输 - 将文件视为 InputStream 并通过使用 Flash 打开的套接字发送。
  4. Java 小程序上传器 - 使用 Apache 的 ftp 客户端,并使用 ftp 发送内容。
  5. Java 网络套接字 - 使用 JRE 打开套接字并通过套接字发送内容。

还有另一个使用 c++ ftp 客户端的解决方案,它将从 Java Applet 调用并使用 c++ 速度优势(与 java 相比)来传递内容。

哪一个应该更有效地交付内容?有没有其他技术可以做我正在寻找的事情?

【问题讨论】:

  • 了解最佳方案的唯一方法是对每个解决方案进行基准测试。否则,所有讨论都只能是理论上的。
  • @Joachim 你是对的,尽管实现所有然后测试它们非常耗时。这就是我需要建议的原因
  • 我同意。值得庆幸的是,一些替代方案可以很快被放弃(例如 HTTP POST 和 FTP 替代方案。)
  • @Joachim Pileborg 感谢您的反馈,我以 Java 上传器结束,它将内容流式传输到服务器上的 FTP 端口。速度很快,但有一个问题:解决方案不是容错的,如果网络中断,上传器将重新开始。如果服务器上已经有一半的原始文件,有什么方法可以模拟上传的简历?

标签: java c++ file-upload ftp


【解决方案1】:

限制上传速度的因素几乎不可避免地是网络,而不是您实现它的语言。

如果可以避免,请不要使用 FTP。

从小程序调用 ftp 客户端,无论它是哪个客户端,也无论您使用什么语言实现小程序,都必须在沙箱之外工作(这不是一个容易解决的问题)。为什么一定要通过网页来实现?

如果您对所使用的客户端有任何控制权,那么 websockets 可能是最明智的解决方案 - 但浏览器中的支持仍然不完整。已经编写了很多 Flash 上传器 - 以及一些 java 的。

【讨论】:

  • 感谢您的回答。如果您要在基于 Flash 的上传器和 Java 小程序上传器之间进行选择,您更喜欢哪一个?是否有机会使用基于 UDP 的传输来最大化网络带宽限制?
  • @Xander 如果您采用 UDP 方式,请小心,因为您必须自己执行数据包重新传输和重新排序等操作。虽然广泛用于游戏,但它主要用于一些丢包无关紧要的数据。
  • @Xander:不,使用 UDP 不会更快/更高效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-19
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 2011-08-07
相关资源
最近更新 更多