FTP上传服务器问题--Host attempting data connect x.x.x.x is not same as server x.x.x.y
2014-06-22 00:17
591 查看
之前项目一直再用apache的FTPClient来进行文件的上传功能,可是最近FTP服务器地址改了,密码和账号也变了。使用FTP手动输入命令时,无账号密码可以登录成功,随意输入账号密码也能登录成功,好囧,这是什么情况?中途参与的项目,在FTP服务器发生变化后,修改服务器iP和端口地址后继续使用原来的FTPClient程序,发现无法上传文件到新地址上。
于是乎,开始各种调式和搜索,发现FTPClient的changeWorkingDirectory(path)和storeFile(filename,
input)执行后,changeWorkingDirectory函数返回的是flase失败,storeFile报异常Host
attempting data connect x.x.x.x is not same as server x.x.x.y。由于FTP服务器要求只能将文件上传到默认文件夹下,这块没法改动, 为了测试,直接注释掉,然后集中解决storefile()的问题:
网上 说得最多的是由于FTP有两种模式,一种是主动方式,另一种是被动方式,只要加上ftpClient.enterLocalPassiveMode()即可解决问题
,遂加之,发现不报异常,但是storefile执行后返回false,发现文件未上传到FTP服务器上。
网上还有一种说法是由于文件名是中文名称的原因,只要添加ftpClient.setControlEncoding("UTF-8"),并在创建目录或者storefile的时候将文件名转换编码方式即可,ftpClient.storeFile(new
String(fileName.getBytes("UTF-8"),"iso-8859-1"),fiStream);或ftpClient.makeDirectory(new String(pathName.getBytes("UTF-8"),"iso-8859-1"));即可解决问题,可我的而文件名不是中文啊!进一步排查手动FTP到服务器,使用passive命令,发现模式修改成功,但是进行put命令时会发现服务器拒绝响应,
排除不是FTP主动和被动工作方式的问题。
想到服务器的账号密码边了。在手动时输入账号和密码的时候直接回车既能连上,查看项目代码,发现无登陆模式的连接方法中有一个setRemoteVerificationEnabled(false),这个方法表示启用或禁用合适
,默认值是核实被启用。在代码中加入此函数,并显示设置enterLocalActiveMode()模式,运行后storefile返回TRUE,正常了。可是文件还是没有上传到FTP服务器, 将之前注释的changeWorkingDirectory(path)去掉注释,继续运行,终于成功上传
,可是changeWorkingDirectory(path)返回false ,好奇怪,为什么?咳,不管了问题解决了就好。 调式这个小玩意竟然花了我一天时间 ,好囧。菜鸟伤不起啊
于是乎,开始各种调式和搜索,发现FTPClient的changeWorkingDirectory(path)和storeFile(filename,
input)执行后,changeWorkingDirectory函数返回的是flase失败,storeFile报异常Host
attempting data connect x.x.x.x is not same as server x.x.x.y。由于FTP服务器要求只能将文件上传到默认文件夹下,这块没法改动, 为了测试,直接注释掉,然后集中解决storefile()的问题:
网上 说得最多的是由于FTP有两种模式,一种是主动方式,另一种是被动方式,只要加上ftpClient.enterLocalPassiveMode()即可解决问题
,遂加之,发现不报异常,但是storefile执行后返回false,发现文件未上传到FTP服务器上。
网上还有一种说法是由于文件名是中文名称的原因,只要添加ftpClient.setControlEncoding("UTF-8"),并在创建目录或者storefile的时候将文件名转换编码方式即可,ftpClient.storeFile(new
String(fileName.getBytes("UTF-8"),"iso-8859-1"),fiStream);或ftpClient.makeDirectory(new String(pathName.getBytes("UTF-8"),"iso-8859-1"));即可解决问题,可我的而文件名不是中文啊!进一步排查手动FTP到服务器,使用passive命令,发现模式修改成功,但是进行put命令时会发现服务器拒绝响应,
排除不是FTP主动和被动工作方式的问题。
想到服务器的账号密码边了。在手动时输入账号和密码的时候直接回车既能连上,查看项目代码,发现无登陆模式的连接方法中有一个setRemoteVerificationEnabled(false),这个方法表示启用或禁用合适
,默认值是核实被启用。在代码中加入此函数,并显示设置enterLocalActiveMode()模式,运行后storefile返回TRUE,正常了。可是文件还是没有上传到FTP服务器, 将之前注释的changeWorkingDirectory(path)去掉注释,继续运行,终于成功上传
,可是changeWorkingDirectory(path)返回false ,好奇怪,为什么?咳,不管了问题解决了就好。 调式这个小玩意竟然花了我一天时间 ,好囧。菜鸟伤不起啊
相关文章推荐
- ftp 主动模式与被动模式:错误异常Host attempting data connection 192.168.90.151 is not same as server 192.168.90.24
- percona innobackupex 遇到 connect to MySQL server as DBD::mysql module is not installed 问题
- 服务器连接错误Host 'XXX' is not allowed to connect to this MySQL server
- 解决服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server
- 解决mysql本地可访问,远程无法访问的问题 Host is not allowed to connect to this MySQL server
- Discuzx2.5 数据库连接问题 Host '***.***.***.***' is not allowed to connect to this MySQL server
- 【解决】Mysql关于Host \'XXX\' is not allowed to connect to this MySQL server 的问题
- 腾讯云安装配置Apache+MariaDB服务器并解决SQLSTATE[HY000] [1130] Host t '*’ is not allowed to connect to this se问题
- 服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server
- 解决服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server
- 服务器连接错误Host 'XXX' is not allowed to connect to this MySQL server如何解决
- E Host '192.168..' is not allowed to connect to this MySQL server 问题解决!
- 远程连接服务器出现 SQL Error (1130): Host IP is not allowed to connect to this MySQL server 错误
- mysql连接云服务器问题(Hostis not allowed to connect to this MySQL server)
- mysql远程连接 Host * is not allowed to connect to this MySQL server问题解决方法
- 解决服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server
- mysql连接权限问题 Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号
- mysql配置,问题解决:Host '**.***.**.***' is not allowed to connect to this MySQL server.
- 解决服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server
- MYSQL安装问题 1130 host localhost is not allowed to connect to this MYSQL server