android - 哪种文件上传协议(protocol) (FTP/HTTP) 适用于网络高度不可靠的移动设备

标签 android http file-upload ftp protocols

我一直致力于 Android 中的文件上传,发现 HTTP 和 FTP 都可用于文件上传,但 Android 本身支持 HTTP,但 FTP 是通过 Apache commons library ,也发现两者各有优缺点但不是从移动端的角度来看,因为在移动端网络中断是很常见的,

所以我的问题

1)无论在手机上还是使用 FTP,我应该坚持 HTTP 多部分文件上传吗

2)我的服务器是FTP存储库,我还能用HTTP上传没有问题吗

3) FTP 是否像 HTTP 一样使用分段上传,或者经常中断时如何处理网络问题

最佳答案

1) Should I stick to HTTP multi-part file upload no matter what in mobiles or is it fine to use FTP

由于 FTP 的设计,在任何使用私有(private) IPv4 地址的网络中都是一个非常糟糕的选择 - 由于 IPv4 地址短缺,大多数移动网络可能都是这种情况。虽然它可能在一个网络中工作,但在另一个网络中却无法工作,如果您尝试将 FTP 与 SSL 结合使用以保护传输,情况会变得更糟。

HTTP 和 HTTPS 通常可以正常工作。通过使用范围请求,您还可以下载部分文件,这在恢复中断的下载或仅加载文档的必要部分(如大 PDF 文件的部分)时非常重要。 FTP 的恢复能力有限,但不如 HTTP Range 请求有用。

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

这两种协议(protocol)的开销大致相同,除了非常小的文件外,其他任何东西都可以忽略。

2) My Server is FTP storage repository, can I still use HTTP to upload without issue

如果您的服务器没有 HTTP 接口(interface),那么您就不能使用 HTTP。但是仅仅描述“FTP 存储库”并没有提供足够的信息来说明它的访问方式。

3) Does FTP use multipart upload just like HTTP or how is network issues handled when there is frequent breaks

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

关于android - 哪种文件上传协议(protocol) (FTP/HTTP) 适用于网络高度不可靠的移动设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35722441/

相关文章:

java - AsyncTask 在 fragment 显示后更新数据

python - 使用 Falcon 的测试模块模拟多部分/表单数据文件上传

php - 尝试将数据库文件导入 phpmyadmin 时出现 "You probably tried to upload a file that is too large."(Windows 10)

javascript - Ext JS 4的文件上传和内部服务器错误

android - 以编程方式获取强调色(从模块)

android - Gradle下载的自动链接源码

rest - 返回未找到子资源的状态码

java - Http Get 请求 - 实际发送什么数据?

android - 为什么 Google 应用内结算在测试购买时会返回正确的 orderId?

api - 带键但不带值的查询字符串