2

如本答案所述,您无法仅使用 Android SDK 在 Android 中获取多部分/表单 POST 上传的进度,因为使用 HttpURLConnection 时存在流缓冲问题,该问题将在 Froyo 后修复(参见http://code .google.com/p/android/issues/detail?id=3164#c6)。

由于 Apache HttpClient 3.1 很早就从 SDK 中删除,并且现在作为 SDK 一部分的新 HttpClient 没有完全采用(它缺少多部分功能),您可以添加缺少的部分(特别是 apache-mime4j-0.6. jar 和 httpmime-4.0.1.jar)执行多部分/表单数据上传并获取上传进度(也在上面提到的答案中描述)。

现在,我提出一个新问题的原因是,按照描述的操作会导致已安装应用程序大小的巨大增长(在我的例子中从 170kb 到 732kb)。

所以,问题是:有没有其他方法可以执行多部分/表单数据上传并在不增加应用程序大小的情况下获取上传进度? 是否有任何其他库可以使用,或者是否有任何其他替代方式,此处未提及?

4

2 回答 2

0

A totally alternative way. This is probably only worth the trouble if your upload takes long, because it will have a certain latency and you cannot update the progress more often than ~1x per second.

Anyways, here's my idea: You could track the upload Progress on the Server Side (for example using PHP and APC).

In android, you could start a separate device that frequently polls the upload status via HTTP and updates the UI.

There are some drawbacks to this solution. Here's what I can think of right now:

  • Complex to implement (separate Thread, additional HTTP-Connection, ..)
  • You need also to be in control of the server side and make changes there.
  • You create additional internet-traffic during your upload which could slow down your upload and consume more of the users free megabytes.
于 2010-07-14T13:53:53.640 回答
0

Apache HttpEntity 接口在概念上非常简单——它只是一个能够将自身写入输出流并知道自己的 MIME 类型的对象。多部分形式的 MIME 类型也很简单。因此,编写一个没有显着外部依赖关系的替代 MultiPartEntity 实现似乎很简单,因此不会显着膨胀您的应用程序。

于 2012-03-24T18:37:21.693 回答