2013-02-28 123 views
2

正在使用AWS软件开发工具包上传图像到亚马逊服务器,在这里我希望上传进度更新我的进度条。但是没有得到正在传输的字节数。Android aws SDK显示上传进度,不返回字节传输

这里是我的代码:

final File image = new File(imagePath); 

       s3Client.createBucket(Constants.getPictureBucket()); 
       // Content type is determined by file extension. 
       PutObjectRequest por = new PutObjectRequest(Constants.getPictureBucket(), 
         obj.stackItem.ItemId + ".jpg", image); 

       s3Client.putObject(por); 

       Log.d("UploadTaskScheduler", "Photo Name: " + obj.stackItem.ItemName); 

       por.setProgressListener(new ProgressListener() { 
        int total = 0; 

        @Override 
        public void progressChanged(ProgressEvent pv) { 
         total += (int) pv.getBytesTransfered(); 
         Log.d("UploadTaskScheduler", "BytesTransfered: " + total); 
        } 

       }); 

它打印出的第一个日志文件的名称。但第二个日志甚至没有打印。

+0

我帮助维护适用于Android的AWS开发工具包,您能告诉我们您正在使用的SDK版本以及您正在构建的API级别? – 2013-02-28 17:17:52

+0

这里是什么obj。我正在面对类似的问题,同时将图片从android上传到图片路径的aws,而不是图片库中的图片选择器。 – 2014-03-11 06:37:41

+0

嗨,和我使用AWS SDK版本aws-android-sdk-2.1.4将图像上传到亚马逊服务器一样。 aws-android-sdk-2.1.4-s3.debug.jar文件只添加在我的libs文件夹中。并且我收到“BasicAWSCredentials无法解析为某种类型”错误。我无法导入“BasicAWSCredentials”。请帮帮我?。提前致谢。 – Sakthi 2014-11-06 12:13:55

回答

3

查看您的代码后,我注意到您在开始上传后设置了进度监听器。

您需要在s3Client.putObject(por);之前移动por.setProgressListener(...);,此时您应该看到上传的进度。

+0

真棒!感谢您的帮助..但最后一个问题,如何获得更多的日志在这个意义上,现在我的文件是非常小的100kb,所以日志打印0,80,100。有些文件0,100直接.. – sukarno 2013-03-01 07:39:10

+0

@ sukarno不幸的是目前无法控制您将收到的进度的时间间隔。 – 2013-03-01 16:33:21

0

你可以这样使用。

 @Override 
     public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) { 

      long _bytesCurrent = bytesCurrent; 
      long _bytesTotal = bytesTotal; 


      float percentage = ((float)_bytesCurrent /(float)_bytesTotal * 100); 
      Log.d("percentage","" +percentage); 

      progressbar.setProgress(percentage); 
     }