本次写下自己实现的上传文件到FTP服务器:
1. maven 依赖
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.1</version>
</dependency>
2.ftp上传代码
package com.zm.mlog.utils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class FTPUtil {
private FTPClient ftp;
/**
*
* @param path
* 上传到ftp服务器哪个路径下
* @param url
* 地址
* @param port
* 端口号
* @param username
* 用户名
* @param password
* 密码
* @return
* @throws Exception
*/
public boolean connect(String path, String url, int port, String username, String password){
boolean result = false;
ftp = new FTPClient();
int reply;
try {
if(port > -1)
ftp.connect(url, port);//连接服务器
else
ftp.connect(url);//无port时的默认连接
ftp.login(username, password);//登录
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);//设置文件传输格式 :二进制
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(path);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
result = true;
return result;
}
/**
* @param file
* 上传的文件或文件夹
*/
public boolean upload(File file)
{
FileInputStream input = null;
boolean success = false;
if (file.isDirectory()) {//判断是否为文件夹
try {//若是文件夹则上床文件夹内所有文件
ftp.makeDirectory(file.getName());//以文件名创建目录
ftp.changeWorkingDirectory(file.getName());
String[] files = file.list();
for (int i = 0; i < files.length; i++) {
File file1 = new File(file.getPath() + "\\" + files[i]);
if (file1.isDirectory()) {
upload(file1);
ftp.changeToParentDirectory();
} else {
File file2 = new File(file.getPath() + "\\" + files[i]);
input = new FileInputStream(file2);
success = ftp.storeFile(nameAndDate(file2.getName()), input);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try {
input.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} else {
File file2 = new File(file.getPath());
try {
input = new FileInputStream(file2);
success = ftp.storeFile(nameAndDate(file2.getName()), input);//这里是我自己的命名,抱错去点就行
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
input.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
try {
ftp.logout();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return success;
}
public static void main(String[] args){
FTPUtil ftpu = new FTPUtil();
ftpu.connect("test01","10.110.18.95",21,"ftpserver","ftpserver");
File file = new File("C:\\Users\\admin\\Desktop\\today.txt");
ftpu.upload(file);
}
}
3.上传到ftp服务器的结果
图一是服务器在本机的地址