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上传路径
第六步,指定上传文件类型为二进制类型
第七步,读取要上传的本地文件路径,同时创建输入流
第八步,用客户端上传本地文件,参数设置文件名跟输入流
第九步,处理异常,关闭文件流,断开服务器连接。
相聚总是短暂,分离总是长久。
送给思而不见爱而不得念而不忘的人。