【发布时间】:2011-11-29 03:01:28
【问题描述】:
在我目前正在开发的应用程序中,我们允许用户将图像上传到我们的服务器。我在 asyncTask 线程中执行此操作,并使用 httpMime 并将图像作为字节数组发送到多部分实体字段之一中。我会说大约 80% 的时间这很好用。图像显示在服务器上的 mySql 表中,因为 longBlob 没问题。另外 20% 的图像在上传时丢失,原因是网络条件的各种变化,或者在我测试过的旧设备(HTC dream/tmobile G1)上,内存会溢出。我通过添加一系列 catch 块来处理内存问题,因此这不再是问题。我试过玩 httpconnectionparams 但我不确定这是否对问题有很大影响。
然而......现在我需要一些指导来了解如何处理由于网络问题(例如延迟、从 4g 切换到边缘以及其他问题(例如完全失去覆盖)而导致的图像丢失)。我正在考虑一个后台服务,它将检查从服务器返回的任何对象,如果对象没有与之关联的图像,则将后台服务排队以重试上传。我主要担心的不是图像在测试期间没有发送到我的服务器,而是偶尔在驾驶时或在塔服务边缘的某个地方进行测试时,该应用程序只会传输我可以在我的数据库中看到的部分图像。
所以......这次我向社区提出的问题是,你们是如何处理这样的问题的。我正在考虑尝试的一种方法是在多部分传输中将文件的实际大小发送到服务器,如果当图像到达我设置的 php 并且与表示文件大小的 int 大小不匹配然后发送回来响应中的标志值。然后根据应用返回的响应,它可能会再次触发异步任务以重新上传照片。这种方法设置起来非常简单,但我想要更多的故障证明,而且如果用户长时间没有覆盖,我会让这个僵尸进程耗尽他们的电池......不好。
像往常一样,任何关于意见、链接或其他帮助的帮助将不胜感激:)
【问题讨论】:
标签: php android mysql http-post