移动网络不稳定情况下,哪种文件上传协议(FTP/HTTP)更好?

3
我一直在Android上进行文件上传的工作,发现可用于文件上传的有HTTP和FTP两种方式,但是Android原生支持HTTP,而FTP则需要通过Apache Commons库。同时发现两种方式都有其优点和缺点,但从移动端的角度来看并没有明显差别,因为在移动设备上,网络中断很常见。
我的问题如下:
1)在移动设备上,无论如何都应该坚持使用HTTP多部分文件上传,还是可以使用FTP?
2)我的服务器是FTP存储库,我能否仍然使用HTTP上传而不会出现问题?
3)FTP与HTTP一样使用多部分上传吗?在网络经常中断时如何处理?

人们还在使用FTP吗?现在已经是2016年了,最近我检查过,FTP非常不安全。 - CommonsWare
不幸的是,有些遗留服务器拒绝迁移,迫使我们在其后面站立。 - Ujju
3个回答

3

1) 不管在移动设备上,我是否应该始终坚持使用HTTP多部分文件上传,还是可以使用FTP?

由于设计原因,FTP不适用于任何使用私有IPv4地址的网络 - 由于IPv4地址短缺的情况下,这可能是大多数移动网络的情况。虽然它可能在一个网络内工作,但在另一个网络内却不能正常工作,如果你尝试将FTP与SSL结合使用以保护传输,则情况会更糟。

相反,HTTP和HTTPS通常没有问题。通过使用范围请求,您还可以下载文件的一部分,这在恢复断点下载或仅加载文档的必要部分(例如大型PDF文件的部分)时非常重要。 FTP具有有限的恢复能力,但不如HTTP范围请求有用。

至于恢复上传,FTP具有REST(重新启动)命令。但是,您需要首先找出服务器接收了多少数据,以便知道从哪里重新开始。 HTTP没有内置的上传恢复功能。您可以在POST或PUT请求中使用Content-Range标头,但是您的服务器需要了解如何处理此标头。或者,您可以将上传分散在多个请求中,这再次需要特殊的服务器端代码来重建服务器上的原始文件。

两个协议的开销大致相同,除非是非常小的文件,否则可以忽略不计。

2) 我的服务器是FTP存储库,我仍然可以使用HTTP上传而不会出现问题吗?

如果您的服务器没有HTTP接口,则无法使用HTTP。但是,“FTP存储库”的描述并未提供足够的关于如何访问它的信息。

3) FTP是否像HTTP一样使用多部分上传,或者在频繁中断时如何处理网络问题?

如果上传中断,您需要找出从哪里重新开始上传(检查远程长度),然后使用REST命令。


感谢详细的解释,解决了我大部分的疑惑,我会查看服务器接口。 - Ujju
创建了HTTP接口,之前FTP存储只有两个参数的身份验证。 - Ujju

2

这是一个错误的问题。客户端操作系统并不重要,也不应该决定你使用的技术。两种协议都有相应的库。选择适合你的用例的那个就好了。这可能是你本应该问的。

至于第二个问题,答案是否定的。FTP和HTTP是不同的协议。你只能使用其中一个。通常你可以在浏览器中查看FTP,因为浏览器实现了两种协议。但使用HTTP与FTP服务器通信是行不通的。


正如你所知道的,Android基于效率考虑移除了Apache客户端,并且在任何文件上传的文档中都没有提及FTP协议。因此可以认为操作系统更青睐哪个对用户更可靠。对于我的使用情况,在存在网络问题的情况下,哪种方法最好? - Ujju
@Ujju:“安卓考虑到效率问题移除了Apache客户端”--嗯,不是这样的。谷歌移除HttpClient是因为他们无法在保持二进制兼容性的同时继续维护它。您可以使用Apache独立打包的Android HttpClient库。 “可以假设操作系统会优先考虑哪个更可靠,以便用户使用” - 我根本不会做出这种假设。谷歌拥有有限的开发人员,而Android设备的ROM较小,以帮助降低价格。因此,并非所有东西都能进入Android。HTTP受欢迎程度更高。 - CommonsWare

1

这取决于您想要的带宽和可靠性;) 所以也许所有智能手机操作系统都有相同的答案:

  • FTP使用更多带宽,具有更可靠的文件传输,需要FTP服务器。
  • HTTP可以使用更少的带宽,并且可以通过其更有效的压缩使用更少的带宽,具有稍微较低的可靠性,需要一个实现上传逻辑的服务器页面的HTTP服务器。

它们两者都适用于Android,因此您的选择取决于评估这些因素。


我知道diff的存在,但正如你所说,移动设备的带宽和可靠性是问题所在。如果根据你的回答,FTP似乎更可靠,但实际上并非如此。 - Ujju
我非常怀疑HTTP使用的带宽会更少。您有这个说法的来源吗? - Steffen Ullrich
@SteffenUllrich https://dev59.com/23RB5IYBdhLWcg3wHkLi 以及谷歌上的许多其他问题。 - Luca C.
@Luke:您提供的链接是关于传输第一个文件开始所需的时间。而不是带宽。FTP和HTTP都以二进制形式传输数据(与邮件相反),并且两者在协议开销方面都没有太多差异。因此,在传输文件所需的字节数方面,它们并没有太大区别。 - Steffen Ullrich

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