SpringBoot项目上传图片到FTP服务器

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
    @Value("${ftp.url}")
	private String server;
	@Value("${ftp.host}")
	private int port;
	@Value("${ftp.user}")
	private String userName;
	@Value("${ftp.password}")
	private String userPassword;
	@Value("${ftppath}")
	private String ftppath;


/**
	 *上传图片到ftp
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(value = "saveUploadFile",method = RequestMethod.POST)
	@ResponseBody
	public ReturnResult saveUploadFile(@RequestBody MultipartFile file, HttpServletRequest request) throws Exception{

		try {
			String fileName = file.getOriginalFilename();
			String name = request.getParameter("river");

			FtpUtils  ftp = new FtpUtils(server,port,userName,userPassword);

			if(name!=null){
				videoService.updateGgp(name,fileName);
				if (ftp.open()) {
					ftp.uploadFile(server, userName,
							userPassword, port,
							fileName,file.getInputStream());
				}

				if (fileName == null){
					Map<String,Object> map = new HashMap<>();
					map.put("上传失败",fileName);

				}
			}

			Map<String,Object> map = 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服务器,同时数据库的图片路径也修改为上传的这个图片的路径

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值