FPClient implémente le téléchargement de fichiers sur le serveur spécifié pour votre référence. Le contenu spécifique est le suivant
Appel
FileInputStream dans = new FileInputStream (nouveau fichier (fileUrl)); MoveFile ("10.3.3. **", 21, "nom d'utilisateur", "mot de passe", path, nom de fichier, in);méthode
/ ** * Description: Télécharger le fichier sur le serveur FTP * @param URL FTP Server Hostname * @param port FTP Server Port * @param Username FTP Connex MOVEFILE (URL de chaîne, port int, nom d'utilisateur de chaîne, mot de passe de chaîne, chemin de chaîne, nom de fichier de chaîne, entrée InputStream) {Boolean Success = false; FtpClient ftp = new ftpClient (); essayez {int réponse; ftp.connect (URL, port); // Connectez le serveur FTP // Si le port par défaut est utilisé, vous pouvez vous connecter directement au serveur FTP à l'aide de FTP.Connect (URL); ftp.login (nom d'utilisateur, mot de passe); // connexion de connexion = ftp.getReplyCode (); if (! ftpreply.ispositivecompletion (réponse)) {ftp.disconnect (); retourner le succès; } // Créer le chemin d'essai {ftp.makedirectory (path); } catch (exception e) {} ftp.enterLocalPassiveMode (); ftp.changeworkingDirectory (chemin); booléen f = ftp.storefile (nom de fichier, entrée); Logger.Error (f); input.close (); ftp.logout (); succès = vrai; } catch (ioException e) {e.printStackTrace (); } enfin {if (ftp.isconnected ()) {try {ftp.disconnect (); } catch (ioException ioe) {}}} return succès; }Quelques détails
FileInputStream.Acailable () renvoie le nombre réel d'octets lisibles, c'est-à-dire la taille totale.
Lorsque la méthode ftpclient.storefile () s'arrête là, il n'y a pas de réaction et il y a un faux état de mort.
Solution de contournement: appelez ftpclient.enterLocalPassiveMode ()
Principe: Parce que le serveur FTP peut ouvrir un port différent pour transmettre des données à chaque fois, mais sur Linux ou d'autres serveurs, en raison de restrictions de sécurité, certains ports peuvent ne pas être activés, donc le blocage se produit.
Le port FTP par défaut est de 21, SSH est 22 et le port de transmission réel est 20
Afficher le port spécifié , exemple 21
netstat -na | grep 21 (numéro de port)
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.