J'ai un serveur FTP, j'essaye de télécharger un fichierapache commons net ftp sendCommand renvoie le mauvais code de réponse
dans FTPClient. openDataConnection(), je descends à la ligne
if (!FTPReply.isPositivePreliminary(sendCommand(command, arg))) {
return null;
}
La commande est "STOR" et arg est "edf0864d-1651-43b2-8453-d160bf9d0742" (le nom du fichier que je veux stocker)
le journal du serveur ressemble:
PORT 86,185,26,230,213,101
200 Port command successful
STOR edf0864d-1651-43b2-8453-d160bf9d0742
150 Opening data channel for file upload to server of "/edf0864d-1651-43b2-8453-d160bf9d0742"
(Up to here after calling sendCommand)
PORT 86,185,26,230,213,102
200 Port command successful
à partir du journal le code de réponse est de 150, mais sendCommand renvoie un code de réponse de 200
O Ther des informations potentiellement importantes
J'utilise serveur filezilla
Le serveur fonctionne la plupart du temps, avec le même code. Le téléchargement initial du fichier fonctionne bien, puis lorsque je choisis un autre fichier pour écraser le premier téléchargement, cela arrive. Suite à cela, il y a un autre fichier avec le même nom, mais je n'ai jamais eu de problème avec ça auparavant.
Le serveur est configuré pour les connexions passives autant que je peux dire, il ne me crie pas quand je le lance comme avant, mais la commande PASV produit un 421 ne pouvait pas créer d'erreur de socket. J'utilise le mode ACTIVE_LOCAL
J'utilise apache net 3.6 communes
Laissez-moi savoir s'il y a plus d'informations qui peuvent aider
Ce sont les parties pertinentes de la java:
FTPClient ftp = new FTPClient();
String server = <server ip>;
int port = 21;
String username = <username>;
String password = <password>;
try{
ftp.connect(server, port);
}
catch(SocketException e){
throw new FTPCouldNotConnectException("Threw SocketException during connection", e);
}
catch(IOException e){
throw new FTPCouldNotConnectException("Threw IOException during connection", e);
}
int reply = ftp.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)){
try{
ftp.disconnect();
throw new FTPCouldNotConnectException("Reply Code: " + reply + ", Could not connect");
}
catch(IOException e){
throw new FTPCouldNotConnectException(
"Threw IOException during disconnection after failing to connect with reply code: " + reply,
e);
}
}
else{
try{
if(ftp.login(username, password)){
LOGGER.info("Successfully logged in to ftp server");
ftp.setFileTransferMode(org.apache.commons.net.ftp.FTP.STREAM_TRANSFER_MODE);
ftp.setFileStructure(org.apache.commons.net.ftp.FTP.FILE_STRUCTURE);
ftp.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE);
ftp.enterLocalActiveMode();
}
else{
LOGGER.warn("Failed to log in to ftp server");
}
}
catch(IOException e){
throw new FTPCouldNotConnectException("Failed to log in to server, threw ioexception", e);
}
}
try{
ftp.storeFile("edf0864d-1651-43b2-8453-d160bf9d0742", new FileInputStream("test.jpg"));
}
catch(IOException e){
LOGGER.error("java.io.IOException caught", e);
}
S'il vous plaît ajouter plus de code – Grzesiek
S'il vous plaît ajouter exactement la bibliothèque à partir de laquelle vous utilisez et leurs versions. – Grzesiek
Ajout du code Java et de la version de la bibliothèque –