By the browser I can connect and browse my FTP server already by the Android of the error and I have the following code.
public class MyActivity extends Activity {
Spinner SpnListarArquivosFTP;
ArrayList<String> ArquivosFTP = new ArrayList<String>();
Spinner SpnListarArquivosCelular;
ArrayList<String> ArquivosCelular = new ArrayList<String>();
ProgressDialog dialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
SpnListarArquivosFTP = (Spinner) findViewById(R.id.spinner1);
SpnListarArquivosCelular = (Spinner) findViewById(R.id.spinner2);
ListarArquivosdoFTP();
ListarArquivosdoCelular();
}
public void ListarArquivosdoFTP()
{
classe_FTP ClienteFTP = new classe_FTP();
ClienteFTP.Conectar("ftp://187.45.142.241", "leo", "asdf", 21);
FTPFile[] arquivos = ClienteFTP.Dir("/pasta1");
if(arquivos != null)
{
int length = arquivos.length;
for(int i = 0; i < length; ++i)
{
FTPFile f = arquivos[i];
if(f.isFile())
{
ArquivosFTP.add(f.getName());
}
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, ArquivosFTP);
SpnListarArquivosFTP.setAdapter(arrayAdapter);
}
}
public void ListarArquivosdoCelular()
{
File diretorio = new File("/mnt/sdcard");
File[] arquivos = diretorio.listFiles();
if(arquivos != null)
{
int length = arquivos.length;
for(int i = 0; i < length; ++i)
{
File f = arquivos[i];
if(f.isFile())
{
ArquivosCelular.add(f.getName());
}
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, ArquivosCelular);
SpnListarArquivosCelular.setAdapter(arrayAdapter);
}
}
public void Efetuar_Download()
{
String lstrArq = "";
try
{
classe_FTP ClienteFTP = new classe_FTP();
lstrArq = "/"+SpnListarArquivosFTP.getSelectedItem().toString();
File lArquivo = new File(Environment.getExternalStorageDirectory(), lstrArq);
ClienteFTP.Conectar("ftp://187.45.142.241", "leo", "asdf", 21);
ClienteFTP.Download("/pasta1", SpnListarArquivosFTP.getSelectedItem().toString(), lArquivo.toString());
}
catch (Exception e)
{
trace("Erro : " + e.getMessage());
}
}
public void Download_click(View v)
{
dialog = ProgressDialog.show(MyActivity.this,"The Club","Sincronizando Dados . . .", false, true);
dialog.setCancelable(false);
new Thread()
{
public void run()
{
try
{
Efetuar_Download();
dialog.dismiss();
}
catch (Exception e)
{
trace("Erro : " + e.getMessage());
}
}
}.start();
}
public void Efetuar_Upload()
{
try
{
String lstrArq = "/"+SpnListarArquivosCelular.getSelectedItem().toString();
classe_FTP ClienteFTP = new classe_FTP();
ClienteFTP.Conectar("ftp://187.45.142.241", "leo", "asdf", 21);
ClienteFTP.Upload(lstrArq, "/pasta1"+lstrArq);
}
catch (Exception e)
{
trace("Erro : " + e.getMessage());
}
}
public void Upload_click(View v)
{
dialog = ProgressDialog.show(MyActivity.this,"The Club","Sincronizando Dados . . .", false, true);
dialog.setCancelable(false);
new Thread()
{
public void run()
{
try
{
Efetuar_Upload();
dialog.dismiss();
}
catch(Exception e)
{
trace("Erro : " + e.getMessage());
}
}
}.start();
}
public void toast (String msg)
{
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show ();
}
private void trace (String msg)
{
toast(msg);
}
}
public class classe_FTP
My other class
FTPClient mFtp;
private String TAG = "classeFTP";
public FTPFile[] Dir(String Diretorio) {
try {
FTPFile[] ftpFiles = mFtp.listFiles(Diretorio);
return ftpFiles;
} catch (Exception e) {
Log.e(TAG, "Erro: não foi possível listar os arquivos e pastas do diretório " + Diretorio + ". " + e.getMessage());
}
return null;
}
public boolean MudarDiretorio(String Diretorio)
{
try
{
mFtp.changeWorkingDirectory(Diretorio);
}
catch(Exception e)
{
Log.e(TAG, "Erro: não foi possível mudar o diretório para " + Diretorio);
}
return false;
}
public boolean Desconectar()
{
try
{
mFtp.disconnect();
mFtp = null;
return true;
}
catch (Exception e)
{
Log.e(TAG, "Erro: ao desconectar. " + e.getMessage());
}
return false;
}
public boolean Conectar(String Host, String Usuario, String Senha, int Porta)
{
try
{
mFtp = new FTPClient();
mFtp.connect(Host, Porta);
if (FTPReply.isPositiveCompletion(mFtp.getReplyCode()))
{
boolean status = mFtp.login(Usuario, Senha);
mFtp.setFileType(FTP.BINARY_FILE_TYPE);
mFtp.enterLocalPassiveMode();
return status;
}
}
catch(Exception e)
{
Log.e(TAG, "Erro: não foi possível conectar" + Host);
}
return false;
}
public boolean Download(String DiretorioOrigem, String ArqOrigem, String ArqDestino)
{
boolean status = false;
try
{
MudarDiretorio(DiretorioOrigem);
FileOutputStream desFileStream = new FileOutputStream(ArqDestino);;
mFtp.setFileType(FTP.BINARY_FILE_TYPE);
mFtp.enterLocalActiveMode();
mFtp.enterLocalPassiveMode();
status = mFtp.retrieveFile(ArqOrigem, desFileStream);
desFileStream.close();
Desconectar();
return status;
}
catch (Exception e)
{
Log.e(TAG, "Erro: Falha ao efetuar download. " + e.getMessage());
}
return status;
}
public boolean Upload(String diretorio, String nomeArquivo)
{
boolean status = false;
try
{
FileInputStream arqEnviar = new FileInputStream(Environment.getExternalStorageDirectory() + diretorio);
mFtp.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE);
mFtp.setFileType(FTPClient.STREAM_TRANSFER_MODE);
mFtp.storeFile(nomeArquivo, arqEnviar);
Desconectar();
return status;
}
catch (Exception e)
{
Log.e(TAG, "Erro: Falha ao efetuar Upload. " + e.getMessage());
}
return status;
}
}
You are giving the following error
11-06 14:42:12.136 3164-3164/com.example.guilherme.uploadimagemservidor E/Trace﹕
error opening trace file: No such file or directory (2)
11-06 14:42:12.864 3164-3164/com.example.guilherme.uploadimagemservidor E/classeFTP﹕ Erro: não foi possível conectarftp://187.45.142.241
11-06 14:42:12.864 3164-3164/com.example.guilherme.uploadimagemservidor E/classeFTP﹕ Erro: não foi possível listar os arquivos e pastas do diretório /pasta1. Connection is not open