【问题标题】:Android- How to handle incomplete image uploadsAndroid-如何处理不完整的图像上传
【发布时间】: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


    【解决方案1】:
    1. 我真的怀疑您是否仅使用 try/catch 块来处理内存不足问题(除非“处理”您的意思是:“它不会崩溃,因为我们不再让这些用户上传大图像”)。
    2. 您使用哪个库进行 HTTP 连接?我问这个是因为我最近在上传时也遇到了 OOM 问题。
    3. 对于您的上传失败,我也有点困惑,您的服务器应该会返回适当的响应,而您的客户端应该会期待这一点。除了(比如说)200 之外的任何东西都应该导致 Android UI 让用户知道图像上传失败并且他应该重试。您的 AsyncTask(希望您正在使用)应该捕获这些异常并适当地处理它们。除非您的服务器有其他问题,否则您不应在“半上传”、断开连接和类似情况下返回 200 秒。

    【讨论】:

    • 大声笑,是的,我只用一个 try/catch 块就神奇地处理了我的内存不足.....dude.....cmon 并且相信我可能只是知道我在做什么大声笑.....我所做的是抓住 OutOfMemoryExceptions 滴流下来,直到我没有在较小的设备上进行任何测试。所以我的 try catch 是这样的.....try{my.process();}catch(OOME){my.process2()} 等等.....我使用的库是 httpmime-4.1 .1 并且效果很好。服务器确实发回了我目前在日志中捕获的响应。但问题出在这里....我现在的设置不检查一半上传
    • 所以如果你能给我一两个关于我应该如何处理一半上传或失败响应的指针,我将非常感激:)
    • 嗯...我也使用了 HTTPMime 并没有遇到内存问题。我实际上用它来解决我在另一个库中遇到的问题。而且我仍然不明白为什么您需要额外的服务来了解您的上传是否成功,但如果它适合您,那就太好了。
    • 我必须创造一些东西,这样我才能绝对肯定图像不仅可以发送到服务器,而且可以将它做成一个实体,这是我的问题。内存问题是由于大量进出手机的图像而不是使用 httpmime 库。但是,是的,我的服务很棒.....每个人也都这样告诉我;)
    【解决方案2】:

    好吧,没有概率.....因为我没有得到任何好的回应,指向我的任何方向,我实施了自己的备份服务来检查服务器中的数据与手机上的数据。如果它没有匹配任何概率,如果它短,则询问用户是否要重新上传。效果很好....感谢我,万岁哈哈!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      相关资源
      最近更新 更多