Spring Boot 框架之任意文件上传到ftp服务器
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import javax.servlet.http.HttpServlet;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.junit.Test;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 用于文件上传测试的servlet
* 进行文件上传时,只能使用post方式提交表单
* @author Administrator
*
*/
/**
* @author james
* @version 1.0
* @Date 创建时间:2018年3月8日 下午3:17:12 本类说明 : 任意文件上传到ftp服务器
*/
@RestController
@RequestMapping("/TestUploadServlet")
public class TestUploadServlet extends HttpServlet {
@Test
public void testFtp1() {
// 创建客户端对象
FTPClient ftp = new FTPClient();
InputStream local = null;
try {
// 连接ftp服务器
ftp.connect("172.16.36.ip", 21);
// 登录
ftp.login("yu", "wang");
// 设置上传路径
String path = "/data01/app/Movies";
//String path = "/data01/app/upload";//亲测ok
//String path = "/data01/app/Movies/test1";//亲测ok
// 检查上传路径是否存在 如果不存在返回false
boolean flag = ftp.changeWorkingDirectory(path);
if (!flag) {
// 创建上传的路径 该方法只能创建一级目录,在这里如果/home/ftpuser存在则可创建image
ftp.makeDirectory(path);
}
// 指定上传路径
ftp.changeWorkingDirectory(path);
// 指定上传文件的类型 二进制文件
ftp.setFileType(FTP.BINARY_FILE_TYPE);
// 读取本地文件
File file = new File("T://123.jar");
local = new FileInputStream(file);
// 第一个参数是文件名
ftp.storeFile(file.getName(), local);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 关闭文件流
local.close();
// 退出
ftp.logout();
// 断开连接
ftp.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Ftp上传服务器的步骤:
第一步,创建一个客户端对象,
第二步,连接服务器,地址,端口,
第三步,实现登录信息,用户名,密码
第四步,创建上传的文件文件夹 同时创建上传路径
第五步,指定ftp上传路径
第六步,指定上传文件类型为二进制类型
第七步,读取要上传的本地文件路径,同时创建输入流
第八步,用客户端上传本地文件,参数设置文件名跟输入流
第九步,处理异常,关闭文件流,断开服务器连接。
相聚总是短暂,分离总是长久。
送给思而不见爱而不得念而不忘的人。