Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/filemanager/FtpFileManagerImpl.java =================================================================== diff -u -r29962 -r29973 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/filemanager/FtpFileManagerImpl.java (.../FtpFileManagerImpl.java) (revision 29962) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/filemanager/FtpFileManagerImpl.java (.../FtpFileManagerImpl.java) (revision 29973) @@ -16,6 +16,7 @@ import org.apache.commons.net.ftp.FTPFileFilter; import org.apache.commons.net.ftp.FTPReply; import com.forgon.directory.vo.LoginUserData; +import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; import com.forgon.util.StringUtil; @@ -228,11 +229,18 @@ if(port == null){ port = 21; } + //是否登录后再设置被动模式,有的医院要先登录再设置 + boolean setPassiveModeAfterLogin = CssdUtils.getSystemSetConfigByNameBool("setPassiveModeAfterLogin", false); //设置被动模式,仅用于客户端和服务器之间的数据传输。在打开每个数据连接之前向服务器发出命令,告诉服务器打开一个数据端口,客户机将连接到该端口进行数据传输。可避免调用listFiles读取文件时停住而造成的假死状态。 - ftp.enterLocalPassiveMode(); + if(!setPassiveModeAfterLogin){ + ftp.enterLocalPassiveMode(); + } ftp.connect(ip, port); // 设置用户名和密码 ftp.login(userName, pwd); + if(setPassiveModeAfterLogin){ + ftp.enterLocalPassiveMode(); + } if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) { ftp.disconnect(); throw new RuntimeException(String.format("未连接到FTP,用户名[%s]或密码错误", userName));