java 用ftp实现上传下载

首先引入ftp所需要的jar包commons-net-3.6.jar

获取FTPClient客户端然后连接登录


	public boolean connectServer() {
		try {
			FTPClient  ftpClient = new FTPClient() ;
			ftpClient.connect(ftpIp, NumberUtils.toInt(ftpPort));
			ftpClient.setControlEncoding("GBK");
			int reply = ftpClient.getReplyCode();
			if (FTPReply.isPositiveCompletion(reply)) {
				if (ftpClient.login(ftpUser, ftPassd)) {
					logger.info("【ftp服务器连接成功!】");
					ftpClient.changeWorkingDirectory(dataPath);  //dataPath文件存放路径
					logger.info("【切换到目录】:{}",dataPath);
					return true;	
				}
			}
		} catch (Exception e) {
		}
		return false;
	}

上传

	public String uploadFile(MultipartFile file)  {
		try {
            //先调用登录
			if(this.connectServer()){
				ftpClient.enterLocalPassiveMode();
				ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
				String fileName = file.getOriginalFilename();
				SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
				String str = sdf.format(new Date());
                //生成新的文件名字
				fileName = str + fileName.substring(fileName.lastIndexOf("."), fileName.length());
	            FileInputStream input=(FileInputStream) file.getInputStream();
	           boolean flag= ftpClient.storeFile(fileName,input);
	            if(flag){
	            	logger.info("文件上传成功!!!"+fileName);
	            }else{
	            	logger.error("文件上传失败!"+fileName);
                    input.close();
	            	return null;
	            }
	            input.close();
	            return fileName;
			}
		} catch (IOException e) {
			e.printStackTrace();
			logger.error("ftp上传异常:{}", e);
		}
		return null;
	}

下载

	public boolean downloadFtpFile(HttpServletResponse resp,String fileName) {

		 try {
				 if(connectServer()){
                     //fileName是文件的路径地址
					 String path=fileName.replaceAll("\\\\", "/");
					 String path1=dataPath+path;
					 logger.info("【第二次切换到目录】:{}",path1);
					 ftpClient.changeWorkingDirectory(path);
					 ftpClient.enterLocalPassiveMode();
					 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
					 boolean flag=ftpClient.retrieveFile(path1, resp.getOutputStream());
				 	 if(flag){
				 	       logger.info("【ftp录音文件播放成功!】{}",path);
				 	  }else{
				 	       logger.info("【ftp录音文件播放失败!】{}",path);
                           ftpClient.logout();
                           return false;
					 }
				 	ftpClient.logout();
                    return true;
				 } 
	        } catch (FileNotFoundException e) {
	        	logger.error("没有找到" + dataPath + "文件");
	            e.printStackTrace();
	        } catch (SocketException e) {
	        	logger.error("连接FTP失败.");
	            e.printStackTrace();
	        } catch (IOException e) {
	            e.printStackTrace();
	            logger.error("文件读取错误。");
	        }
            return false;
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值