私のアプリケーションで実際に何をするのが画像をキャプチャしてディスクに保存してからs3にアップロードします。私はAndroid appからs3に画像をアップロードしていますが、アップロードされた画像もありますが、アップロードに失敗した画像があります。
アップロードする私のコードは、画像が保存されている場合、私はちょうど(ファイルアップロードを呼び出す
public void credentialsProvider(){
// Initialize the Amazon Cognito credentials provider
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(),
"ap-south-1:---------------", // Identity Pool ID
Regions.AP_SOUTH_1 // Region
);
setAmazonS3Client(credentialsProvider);
}
/**
* Create a AmazonS3Client constructor and pass the credentialsProvider.
* @param credentialsProvider
*/
public void setAmazonS3Client(CognitoCachingCredentialsProvider credentialsProvider){
// Create an S3 client
s3 = new AmazonS3Client(credentialsProvider);
// Set the region of your S3 bucket
s3.setRegion(Region.getRegion(Regions.AP_SOUTH_1));
}
public void setTransferUtility(){
transferUtility = new TransferUtility(s3, getApplicationContext());
}
/**
* This method is used to upload the file to S3 by using TransferUtility class
*
*/
public void fileUpload(){
TransferObserver transferObserver = transferUtility.upload(
"train-faces", /* The bucket to upload to */
time1+date1+"_"+"1" + "_pic.jpg", /* The key for the uploaded object */
fileToUpload /* The file where the data to upload exists */
);
transferObserverListener(transferObserver);
}
/**
* This is listener method of the TransferObserver
* Within this listener method, we get status of uploading and downloading file,
* to display percentage of the part of file to be uploaded or downloaded to S3
* It displays an error, when there is a problem in uploading or downloading file to or from S3.
* @param transferObserver
*/
public void transferObserverListener(TransferObserver transferObserver){
transferObserver.setTransferListener(new TransferListener(){
@Override
public void onStateChanged(int id, TransferState state) {
if (state.COMPLETED.equals(transferObserver.getState())) {
Toast.makeText(CameraService.this, "File Upload Complete", Toast.LENGTH_SHORT).show();
fileToUpload.delete();
}
Log.e(TAG, "statechange"+state+"");
}
@Override
public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
int percentage = (int) (bytesCurrent/bytesTotal * 100);
Log.e(TAG,"percentage"+percentage +"");
if (percentage==100){
//fileToUpload.delete();
}
}
@Override
public void onError(int id, Exception ex) {
Log.e(TAG,"error"+"error");
}
});
}
です)時々、画像が正常に私が手にいくつかの回をアップロードなっている: は、HTTPリクエストを実行するため、できないにアップロードに失敗しました。 7ホスト名に関連付けられたホストアドレスを解決できません
私はこれをより信頼性の高いものにして、アプリケーションのアップロードの失敗を避ける方法をこれで実現したいと思います。
私はWi-Fiやモバイルデータをテストしていると、ネットワークの問題があると思いますか? –
私は両方の場合(WiFi&モバイルデータ)の成功率は、モバイルデータを使用してより多くの場合にテストしました。 –
@HareshChhelanaアップロードした画像150枚が失敗してしまった。 –