2017-10-18 62 views
0

我正在构建一个android应用程序,它拍摄一张照片并将其上传到Amazon S3。我的代码似乎运行良好,因为它实际上正在运行(通过调试断点确认),但它不是上传。我没有收到错误消息,并且我放入应用程序的log.d消息没有出现在logcat中。Android App S3上传不起作用。没有错误

我用这亚马逊教程:http://docs.aws.amazon.com/mobile-hub/latest/developerguide/add-aws-mobile-user-data-storage.html#add-aws-mobile-user-data-storage-app

我第一次跑的代码,我得到了一个错误,抱怨TransferUtility.builder()没有必须.s3Client所以我把在

违规代码:

private void uploadImage(){ 
 
     AWSConfiguration awsConfig = 
 
       new AWSConfiguration(getActivity().getApplicationContext()); 
 
     AmazonS3Client s3Client = new AmazonS3Client(IdentityManager.getDefaultIdentityManager() 
 
       .getCredentialsProvider().getCredentials()); 
 

 
     TransferUtility transferUtility = 
 
       TransferUtility.builder() 
 
         .context(getActivity().getApplicationContext()) 
 
         .awsConfiguration(awsConfig) 
 
         .s3Client(s3Client) 
 
         .build(); 
 

 
     TransferObserver uploadObserver = 
 
       transferUtility.upload(
 
         "sniffer-gps-app/UserDogPhotos/"+userId+photoFile.getName(), 
 
         photoFile); 
 

 
     uploadObserver.setTransferListener(new TransferListener() { 
 

 
      @Override 
 
      public void onStateChanged(int id, TransferState state) { 
 
       if (TransferState.COMPLETED == state) { 
 
        //todo something here 
 
        Log.d("S3", "done"); 
 
        nextFragment(); 
 
       } 
 

 
      } 
 

 
      @Override 
 
      public void onProgressChanged(
 
        int id, long bytesCurrent, long bytesTotal) { 
 
       Log.d("S3", "ID: "+id+"\r\nBytesCurrent: "+bytesCurrent+"\r\nBytesTotal: "+bytesTotal); 
 
       // TODO Auto-generated method stub 
 

 
      } 
 

 
      @Override 
 
      public void onError(int id, Exception ex) { 
 
       Log.d("S3", ex.toString()); 
 
       Integer ID = id; 
 
       Log.d("S3", ID.toString()); 
 
      } 
 

 
     }); 
 
    }

photoFile是一个File对象。

sniffer-gps-app是斗名

UserDogPhotos是在桶

+0

您是否添加了访问网络状态的权限?像这样: https://github.com/awslabs/aws-sdk-android-samples/blob/master/S3TransferUtilitySample/AndroidManifest.xml#L38 –

+0

我绝对这样做。打电话给cognito和dynamoDB工作得很好。 – Reid

回答

1

在我的清单中的服务标签是我的应用程序标签以外的文件夹中。