1. properties配置
#ftp
ftp.url=192.168.101.1 ftp路径
ftp.host=21 ftp端口号
ftp.user=ftpadmin 用户名
ftp.password=123456 密码
ftppath:/ftpFile 上传的路径
2. ftp上传工具类
* Description: 向FTP服务器上传文件* @param ftpHost FTP服务器hostname* @param ftpUserName 账号* @param ftpPassword 密码* @param ftpPort 端口* @param fileName ftp文件名称* @param input 文件流* @return 成功返回true,否则返回false*/public static boolean uploadFile(String ftpHost, String ftpUserName,String ftpPassword, int ftpPort,String fileName,InputStream input) {boolean success = false;FTPClient ftpClient = null;try {int reply;ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort);reply = ftpClient.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftpClient.disconnect();return success;}ftpClient.setControlEncoding("UTF-8"); // 中文支持ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient.enterLocalPassiveMode();//ftpClient.changeWorkingDirectory(ftpPath);//设置编码,防止上传的时候使用postman上传成功,但是前端上传失败(编码的格式)ftpClient.storeFile(new String(fileName.getBytes("gbk"), "iso-8859-1"), input);input.close();ftpClient.logout();success = true;} catch (IOException e) {e.printStackTrace();} finally {if (ftpClient.isConnected()) {try {ftpClient.disconnect();} catch (IOException ioe) {}}}return success;}
3. 一个简单的Controller
&#64;Value("${ftp.url}")private String server;&#64;Value("${ftp.host}")private int port;&#64;Value("${ftp.user}")private String userName;&#64;Value("${ftp.password}")private String userPassword;&#64;Value("${ftppath}")private String ftppath;/***上传图片到ftp* &#64;return* &#64;throws Exception*/&#64;RequestMapping(value &#61; "saveUploadFile",method &#61; RequestMethod.POST)&#64;ResponseBodypublic ReturnResult saveUploadFile(&#64;RequestBody MultipartFile file, HttpServletRequest request) throws Exception{try {String fileName &#61; file.getOriginalFilename();String name &#61; request.getParameter("river");FtpUtils ftp &#61; new FtpUtils(server,port,userName,userPassword);if(name!&#61;null){videoService.updateGgp(name,fileName);if (ftp.open()) {ftp.uploadFile(server, userName,userPassword, port,fileName,file.getInputStream());}if (fileName &#61;&#61; null){Map map &#61; new HashMap<>();map.put("上传失败",fileName);}}Map map &#61; new HashMap<>();map.put("name",fileName);return new ReturnResult(Constant.ResultCode.SUCCESS, "请求成功", map);} catch (Exception e) {e.printStackTrace();return new ReturnResult(Constant.ResultCode.ERROR, "请求失败");}}
postman测试成功上传图片到FTP服务器&#xff0c;同时数据库的图片路径也修改为上传的这个图片的路径