如何实现挂起上传到服务器android

时间:2014-01-08 00:41:09

标签: android file-upload

我正在开发一个使用nojs作为服务器的应用程序,它的主要功能是将图像,视频和笔记上传到服务器。

当用户限制带宽或没有互联网连接时,我想要注意这种情况,所以我希望我的应用程序中的所有文件更改为待定状态,等待util用户恢复互联网连接。

这是我在AsyncTask类上传中的代码

        File file = new File(imgPath);

        //Create the POST object
        HttpPost post = new HttpPost(url);


        MultipartEntity entity = new MyMultipartEntity(new ProgressListener()
        {
            @Override
            public void transferred(long num)
            {
                //Call the onProgressUpdate method with the percent completed
                publishProgress((int) ((num / (float) totalSize) * 100));
                Log.d("DEBUG", num + " - " + totalSize);
            }
        });
        //Add the file to the content's body
        ContentBody cbFile = new FileBody( file, "video/mp4" );
        entity.addPart("source", cbFile);

        //After adding everything we get the content's lenght
        totalSize = entity.getContentLength();

        //We add the entity to the post request
        post.setEntity(entity);

        //Execute post request
        HttpResponse response = client.execute( post );
        int statusCode = response.getStatusLine().getStatusCode();

        if(statusCode == HttpStatus.SC_OK){
            //If everything goes ok, we can get the response
            String fullRes = EntityUtils.toString(response.getEntity());
            Log.d("DEBUG", fullRes);

        } else {
            Log.d("DEBUG", "HTTP Fail, Response Code: " + statusCode);
        }

解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:0)

您需要实现在设备上连接发生变化时调用的广播接收器。

当您收到消息时,您可以检查是否有任何待处理的上传并继续(您需要实现此逻辑)。

您的广播接收器需要处理android.net.conn.CONNECTIVITY_CHANGE。如何做到这一点是关于SO的好文档,或者一个好的起点是The Android Connectivity Manager