使用的是springboot 操作ftp,
以前向ftp服务上传文件是ok的,但是今天突然上传失败,debug的时候发现:
下面这一句总是返回false,于是百度了一下 returnValue = ftpClient.storeFile(fileName, buffIn);
------------------------------
百度内容:
今天在利用FTP将客户端文件存储到服务器端时,在调用ftpClient.storeFile方法后,总是返回false,在百度之后,有提到说添加一行
ftpClient.enterLocalPassiveMode();
就能解决这个问题,但是在测试之后还是出现,后来整了半天才知道,问题出在中文文件名身上。因此可在代码中添加如下代码:
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"));
即可解决这个问题
---------------------------
实际就是在原来的那条语句之前添加了模式的设置,模式为被动模式,
ftpClient.enterLocalPassiveMode();
returnValue = ftpClient.storeFile(fileName, buffIn);
那么主动模式可以不?
如果不设置,使用的是什么模式?
待研究。。。