Android implementa upload de arquivo FTP

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());
        }

    }

おすすめ

転載: blog.csdn.net/chongchi_wxcc/article/details/126799837