FTP upload in Android
Oggi vediamo una semplice classe per l'upload di file su un server remoto tramite FTP.
Per la connessione FTP useremo la "solita" libreria Apache Commons Net.
Una volta scaricata, integratela nel progetto.
Non ci resta che vedere la classe:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class UploadFile {
private static final String HOSTNAME = "";
private static final String USER = "";
private static final String PASSWORD = "";
public static void uploadFile(String localFile) throws SocketException,
IOException {
if (new File(localFile).exists()) {
FTPClient ftp = new FTPClient();
ftp.connect(HOSTNAME);
ftp.login(USER, PASSWORD);
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.changeWorkingDirectory("/dir_to_upload");
int reply = ftp.getReplyCode();
if (FTPReply.isPositiveCompletion(reply)) {
FileInputStream in = new FileInputStream(new File(localFile));
ftp.enterLocalPassiveMode();
ftp.storeFile("file.zip", in);
}
ftp.logout();
ftp.disconnect();
}
}
}
Come vedete non è nulla di complicato; anzi fino a qui è praticamente uguale a un classico programma scritto in Java.
A questo punto, per effettuare l'upload dalla vostra Activity, vi serve qualcosa del genere:
private class DoUpload extends AsyncTask<Object, Object, Object> {
private ProgressDialog pd = new ProgressDialog(ActivityMain.this);
@Override
protected void onPreExecute() {
super.onPreExecute();
pd.setMessage("...Creating Excel...");
pd.show();
}
@Override
protected Object doInBackground(Object... params) {
try {
UploadFile.uploadFile("file.zip");
} catch (SocketException e) {
} catch (IOException e) {
}
return null;
}
@Override
protected void onPostExecute(Object result) {
super.onPostExecute(result);
pd.dismiss();
}
}
Quindi usando AsyncTask come per tutte le operazioni del genere.
Enjoy!
java android activity ftp apache apache commons net asynctask
Commentami!