Question

Quelqu'un peut-il me expliquer ce qui ne va pas avec le code suivant? J'ai essayé différents hôtes, FTPClientConfigs, il est bien accessible via firefox / filezilla ... Le problème est que je reçois toujours vide filelist sans aucune exception (files.length == 0). J'utilise commons-net-2.1.jar installé avec Maven.

    FTPClientConfig config = new FTPClientConfig(FTPClientConfig.SYST_L8);

    FTPClient client = new FTPClient();
    client.configure(config);

    client.connect("c64.rulez.org");
    client.login("anonymous", "anonymous");
    client.enterRemotePassiveMode();

    FTPFile[] files = client.listFiles();
    Assert.assertTrue(files.length > 0);
Était-ce utile?

La solution

Je l'ai trouvé!

La chose est que vous voulez passer en mode passif après vous être connecté, mais avant de vous connecter . Votre code retourne rien pour moi, mais cela fonctionne pour moi:

import org.apache.commons.net.ftp.FTPClient;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPFile;

public class BasicFTP {

    public static void main(String[] args) throws IOException {
        FTPClient client = new FTPClient();
        client.connect("c64.rulez.org");
        client.enterLocalPassiveMode();
        client.login("anonymous", "");
        FTPFile[] files = client.listFiles("/pub");
        for (FTPFile file : files) {
            System.out.println(file.getName());
        }
    }
}

me donne cette sortie:

c128
c64
c64.hu
incoming
plus4

Autres conseils

Seulement à l'aide enterLocalPassiveMode() n'a pas fonctionné pour moi.

je code suivant, qui a travaillé.

    ftpsClient.execPBSZ(0);
    ftpsClient.execPROT("P");
    ftpsClient.type(FTP.BINARY_FILE_TYPE);

Exemple complet est comme ci-dessous,

    FTPSClient ftpsClient = new FTPSClient();        

    ftpsClient.connect("Host", 21);

    ftpsClient.login("user", "pass");

    ftpsClient.enterLocalPassiveMode();

    ftpsClient.execPBSZ(0);
    ftpsClient.execPROT("P");
    ftpsClient.type(FTP.BINARY_FILE_TYPE);

    FTPFile[] files = ftpsClient.listFiles();

    for (FTPFile file : files) {
        System.out.println(file.getName());
    }

généralement l'utilisateur anonyme n'a pas besoin d'un mot de passe, essayez

client.login("anonymous", "");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top