如本answer所述,您无法仅使用Android SDK获取Android中多部分/表单POST上传的进度,因为使用HttpURLConnection时流缓冲存在问题,将在Froyo后修复(见http://code.google.com/p/android/issues/detail?id=3164#c6)。
由于很早就从SDK中删除了Apache HttpClient 3.1而且现在已经完全采用了新的HttpClient(它现在是SDK的一部分)(它错过了多部分功能),你可以添加缺少的部分(特别是apache-mime4j) -0.6.jar和httpmime-4.0.1.jar)执行multipart / form-data上传并获取上传进度(也在上面提到的答案中描述)。
现在,我打开一个新问题的原因是,按照描述进行操作会导致已安装的应用程序大小(在我的情况下从170kb到732kb)大幅增长。
所以,问题是:还有其他方法可以执行多部分/表单数据上传并获取上传进度而不会增加应用程序的大小吗? 是否有其他可以使用的库或者是否有其他替代方法,这里没有提到?
答案 0 :(得分:0)
一种完全替代的方式。如果您的上传需要很长时间,这可能是值得的,因为它会有一定的延迟,您不能更频繁地更新进度超过每秒1次。
无论如何,这是我的想法:您可以跟踪服务器端的上传进度(例如using PHP and APC)。
在android中,您可以启动一个单独的设备,该设备经常通过HTTP轮询上传状态并更新UI。
此解决方案存在一些缺点。这就是我现在能想到的:
答案 1 :(得分:0)
Apache HttpEntity接口在概念上非常简单 - 它只是一个能够将自己写入输出流并知道自己的MIME类型的对象。多部分表单MIME类型也很简单。因此,编写一个没有重要外部依赖关系的替换MultiPartEntity实现似乎很简单,因此不会显着扩大您的应用程序。