I want to upload multiple photos to SFTP server
but with the following code only one photo is uploaded. Please anybody has any idea where I m getting wrong or have a better approach for this
private class uploadFileOnFTPServerAsync extends
AsyncTask<Void, Void, Void> {
ProgressDialog pdDialog;
@Override
protected void onPreExecute() {
try {
pdDialog = new ProgressDialog(MediaFileAttachmentActivity.this);
pdDialog.setMessage("Loading please wait..");
pdDialog.show();
pdDialog.setCancelable(false);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected Void doInBackground(Void... params) {
if (mediaDataList.size() > 0) {
for (int i = 0; i < mediaDataList.size(); i++) {
if (mediaDataList.get(i).getMediaFTPPath()
.equalsIgnoreCase("")) {
uploadFileonSFTP(mediaDataList.get(i)
.getmFile(), mediaDataList.get(i)
.getMediaName(), "images");
}
}
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
pdDialog.dismiss();
MediaFileAttachmentActivity.this.finish();
Toast.makeText(MediaFileAttachmentActivity.this,
"Attachments saved successfully", Toast.LENGTH_SHORT)
.show();
}
}
private void uploadFileonSFTP(final File file2, String app_filename,
String type){
try{
new Thread(new Runnable() {
@Override
public void run() {
connectToSFTP(file2);
}
}).start();
} catch (Exception e) {
e.printStackTrace();
}
}
private void connectToSFTP(File file2)
{
try {
JSch jsch = new JSch();
session = jsch.getSession(USER_NAME,SERVER_ADDRESS,PORT_NO);
session.setPassword(AppSingleton.getInstance().getPASSWORD());
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp)channel;
channelSftp.cd(AppSingleton.getInstance().getPATH());
// File f = new File(file2);
channelSftp.put(new FileInputStream(file2), file2.getName());
session.disconnect();
channel.disconnect();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (JSchException e) {
e.printStackTrace();
} catch (SftpException e) {
e.printStackTrace();
}
}
I have solved the issue by creating a thread instead of Asynctask
private void executeThread() {