org.apache.commons.net.*"."/> org.apache.commons.net.*".">

Maison >Java >javaDidacticiel >Que faire si le téléchargement FTP Java échoue

Que faire si le téléchargement FTP Java échoue

藏色散人
藏色散人original
2020-05-30 10:37:482949parcourir

Que faire si le téléchargement FTP Java échoue

Que dois-je faire si le téléchargement FTP Java échoue ?

J'ai récemment travaillé sur un projet qui nécessitait de télécharger des fichiers dans un répertoire FTP désigné. J'ai ensuite découvert que le projet pouvait être déployé avec succès sur Tomcat, mais échouait lorsqu'il était déployé sur Weblogic. sur Internet et je ne l'ai pas encore résolu.

boolean isSuccee = ftp.storeFile(fileName, in);

Cela renvoie toujours false et le téléchargement échoue

Ensuite, j'ai regardé la solution en ligne et j'ai ajouté ftp.enterLocalPassiveMode(); au code :

Connectez-vous d'abord au service ftp

private static FTPClient ftp;
/*
* 获得ftp链接
*/
public static boolean connectFtp(Ftp ftpInfo) throws Exception {
ftp = new FTPClient();
boolean flag = false;
int reply;
if(ftpInfo.getPort() != null && !"".equals(ftpInfo.getPort())){
ftp.connect(ftpInfo.getIpAddr(),ftpInfo.getPort());
}else{
ftp.connect(ftpInfo.getIpAddr());
}
ftp.login(ftpInfo.getUserName(), ftpInfo.getPwd());
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return flag;
}
ftp.changeWorkingDirectory(ftpInfo.getPath());
flag = true;
return flag;
}

puis téléchargez le fichier :

/**
* 文件上传
* @param file
* @throws IOException
*/
    public static void uploadFile(File file) throws IOException {  
        FileInputStream in = null;  
        try {  
            in = new FileInputStream(file);  
  
            String fileName = file.getName();
            /**
             * ftp.enterLocalPassiveMode();
             * 这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。
             * 为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数据,
             * 但是在linux上或者其他服务器上面,由于安全限制,可能某些端口没有开启,所以就出现阻塞。
             */
            ftp.enterLocalPassiveMode();
            ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);
            boolean isSuccee = ftp.storeFile(fileName, in);
            int i = 1;
            String newFileName = null;
            while (!isSuccee) {  //多次上传数据直到成功(最多12次) 
            newFileName = i + fileName;
            isSuccee = ftp.storeFile(newFileName, in);
            i++;
            if(i>11){
            break;
            }
}
            String ftpPath = ServiceConstans.ONEPORT_FTP_PATH;//驳船配载图上传到FTP的路径
            if (isSuccee ) {   //成功
                logger.info("FTP:文件上传成功!");
                if( newFileName == null){
                ftp.rename(fileName, ftpPath+fileName);  // 第一次上传就成功
                }else{
                ftp.rename(newFileName, ftpPath+fileName);
                }
            } else {  
            logger.info("FTP:文件上传失败!!");
            throw new BusiException("FTP:文件上传失败!!");
            }  
        } catch (FileNotFoundException e) {  
            logger.error("未找到相关文件!", e);  
        } catch (IOException e) {  
        logger.error("上传文件失败!", e);  
        } finally {  
        in.close();
        //file.delete();//删除源文件
        }  
    }

Solution :

Puisqu'il n'y a pas de problème avec le code, vérifiez-le côté serveur ;

Parce que la version du package jar sur la logique Web est inférieure à celle du package jar dans le projet, s'il n'y a pas de paramètre de recherche forcé pour le package jar de ce projet, le package jar dans weblogic sera chargé en premier, donc le téléchargement échoue car la version est trop basse

Que faire si le téléchargement FTP Java échoueAjoutez donc le package org.apache.commons.net.* dans le fichier weblogic.xml, qui sera prioritaire Chargez le package jar dans le projet, c'est fait !

Que faire si le téléchargement FTP Java échoueRecommandations associées : "

apprentissage Java

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Comment fonctionne SpringMVCArticle suivant:Comment fonctionne SpringMVC