代码原地址:https://blog.csdn.net/l_15156024189/article/details/82146546
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class Base64PDF {
//服务器ip地址
private static String url = "172.20.1.5";
//FTP端口,默认是21(注意:SSH默认22)
private static int port = 21;
//登录用户名
private static String username = "root";
//登录密码
private static String password = "root";
/**
* @param cityStr 写入文件字符串
* @param filename 文件名称
* @return
*/
public boolean uploadPDF(String cityStr,String filename) {
//写入文件的字符串
boolean success = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.setControlEncoding("UTF-8");
//连接FTP服务器
ftp.connect(url, port);
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.login(username, password);
//如果reply的值是230,表示连接成功,530可能是用户名或者密码错误
//500可能是/home/test目录不存在
reply = ftp.getReplyCode();
System.out.println(reply);
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
byte[] cBytes = decoder.decodeBuffer(cityStr);
//字符串转换为字节数组
InputStream input = new ByteArrayInputStream(cBytes);
//调用此方法解决假死状态(设置为被动模式:客户端通知服务端开通一个端口用来数据传输)
ftp.enterLocalPassiveMode();
//设置上传
ftp.changeWorkingDirectory("/usr/local/pdf");
//需要添加这行代码,不然上传的文件为空
ftp.setFileType(FTP.BINARY_FILE_TYPE);
boolean g = ftp.storeFile(filename, input);
System.out.println("上传服务器:" + g);
input.close();
ftp.logout();
if(g){
success = true;
}else{
success = false;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}
}