Spring Boot 框架之任意文件上传到ftp服务器

时间:2021-11-10 03:41:42
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上传路径
第六步,指定上传文件类型为二进制类型
第七步,读取要上传的本地文件路径,同时创建输入流
第八步,用客户端上传本地文件,参数设置文件名跟输入流
第九步,处理异常,关闭文件流,断开服务器连接。

相聚总是短暂,分离总是长久。

送给思而不见爱而不得念而不忘的人。