我正在构建一个拍摄照片并将其上传到 Amazon S3 的 android 应用程序。我的代码似乎运行良好,因为它实际上正在运行(通过调试断点确认),但是它没有上传。我没有收到任何错误消息,并且我放入应用程序的 log.d 消息不会出现在 logcat 中。
第一次运行代码时,我收到一个错误,抱怨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
是bucket中的一个文件夹