1. Se você já possui um servidor, não precisa configurá-lo sozinho. Se você não possui um servidor para teste, pode configurar um servidor através do FileZilla Server. Como baixar e configurar o FileZilla Server pode ser feito por você mesmo.
Só precisamos saber o ip, nome de usuário e senha aqui;
2. Conecte-se ao servidor FTP
FTPClient ftpClient = new FTPClient();
public boolean connect(String ip, int port, String user, String pwd) { boolean bool = false; tentar { if (ftpClient.isConnected()) {//Julga se foi logado ftpClient.disconnect(); } ftpClient.setConnectTimeout(5000); ftpClient.setDataTimeout(10000);//Define o tempo limite da conexão ftpClient.enterLocalPassiveMode(); ftpClient.connect(ip, porta); if (ftpClient.login(usuário, pwd)) { bool = verdadeiro; } }catch (Exceção e) { Log.i(TAG," --- Exceção de Conexão: " + e.getMessage()); e.printStackTrace(); booleano = falso; } retornar bool; }
2. Depois de se conectar ao servidor, você pode carregar o arquivo a seguir, o código é o seguinte
/** * * @param filePath O caminho do arquivo enviado * @param fileName nome do arquivo * @retornar */ public boolean ftpUpload(String filePath, String desFileName) { estado booleano = falso; FileInputStream srcFileStream = nulo; tentar { srcFileStream = new FileInputStream(srcFilePath); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); if (ftpClient.storeFile(desFileName, srcFileStream)) { estado = verdadeiro; } } catch (Exceção e) { estado = falso; e.printStackTrace(); }finalmente { tentar { if (srcFileStream != null) { srcFileStream.close(); } } catch (IOException e) { e.printStackTrace(); } } estado de retorno; }
Durante o processo de upload, às vezes haverá um problema que o arquivo carrega por um longo tempo, mas falha. Isso exige que façamos um julgamento sobre o tempo limite de upload do arquivo, e o próprio FTPClient não possui uma API para definir o tempo limite de upload do arquivo, que precisa ser implementado por nós mesmos. Envie uma mensagem de atraso através do Handler. Se o arquivo não tiver sido carregado com sucesso durante esse período de atraso, será determinado que o upload do arquivo expirou e a conexão ftpClient será encerrada;
3. Depois de enviar arquivos via FTP, você precisa fechar o FTP
public void closeFTP(boolean logout) { tentar { if (ftpClient != null && ftpClient.isConnected()) { if(sair) { ftpClient.logout(); } ftpClient.disconnect(); } }catch (Exceção e) { e.printStackTrace(); Log.i(TAG," --- closeFTP Exception : " + e.getMessage()); } }