पर समानांतर अपलोड कर रहा है मैं अमेज़ॅन एस 3 सर्वर पर छवि अपलोड करने के लिए ट्रांसफर यूटिलिटी का उपयोग कर रहा हूं। मैं 3 छवियों को एक-एक करके अपलोड करने की कोशिश कर रहा हूं लेकिन यह समानांतर अपलोड कर रहा है। मैं छवियों को एक-एक करके अपलोड करना चाहता हूं। मैं इसे कैसे करूं? मैं अपलोड करने के लिए इस नीचे दिए गए कोड का उपयोग कर रहा:छवि एस 3 सर्वर
private void uploadToAWS(TransferUtility transferUtility,final ArrayList<File> imageFileArrayList){
final ArrayList<String> uploadedFileArrayList = new ArrayList<>();
final ArrayList<String> failedFileArrayList = new ArrayList<>();
for(int i = 0; i < imageFileArrayList.size(); i++) {
final File file = imageFileArrayList.get(i);
final TransferObserver observer = transferUtility.upload(
Constants.S3_BUCKET_NAME, /* The bucket to upload to */
"Test_Images" + file.getAbsolutePath(), /* The key for the uploaded object */
file /* The file where the data to upload exists */
);
observer.setTransferListener(new TransferListener() {
@Override
public void onStateChanged(int id, TransferState state) {
System.out.println("Id:- " + id);
if (state == TransferState.COMPLETED) {
uploadedFileArrayList.add(observer.getAbsoluteFilePath());
} else if (state == TransferState.FAILED) {
failedFileArrayList.add(file.getAbsolutePath());
}
}
@Override
public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
int percent = (int) ((bytesCurrent * 100)/bytesTotal);
System.out.println("percent:- " + percent);
}
@Override
public void onError(int id, Exception ex) {
ex.printStackTrace();
System.out.println("Id:- " + id + " in exception");
}
});
}
}
इस समारोह मैं Asynctask में बोल रहा हूँ।
@Override
protected Void doInBackground(Void... params) {
AmazonS3 amazonS3 = new AmazonS3Client(getAWSCredentials());
TransferUtility transferUtility = new TransferUtility(amazonS3, context);
uploadToAWS(transferUtility, imageFileArrayList);
return null;
}
कृपया मदद करें।
कोड पोस्ट करें जहां आप 'AsyncTask' बना रहे हैं। आप शायद 3 'AsyncTask' बना रहे हैं और एक ही समय में उन सभी को निष्पादित कर रहे हैं। – Abbas
मैं इसे मुख्य क्रिया से केवल एक बार बुला रहा हूं। नया अपलोड ImageInBackground (mContext, fileArrayList) .execute(); –