From b0a219d0c939996b6c2b82bcbbe6cd0c4cabe0ca Mon Sep 17 00:00:00 2001 From: zuowenwen Date: Sat, 9 Oct 2021 16:35:58 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8D=A3=E5=85=B4=20FTP-zww?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ftp/controller/SysFtpController.java | 21 +++- .../com/gaotao/modules/ftp/util/FTPUtils.java | 104 ++++++++++++++++++ 2 files changed, 123 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gaotao/modules/ftp/controller/SysFtpController.java b/src/main/java/com/gaotao/modules/ftp/controller/SysFtpController.java index 79d8e8c..9a48bf3 100644 --- a/src/main/java/com/gaotao/modules/ftp/controller/SysFtpController.java +++ b/src/main/java/com/gaotao/modules/ftp/controller/SysFtpController.java @@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; @@ -76,7 +77,7 @@ public class SysFtpController extends AbstractController { dir.delete(); ossEntity.setUrl(r.get("url").toString()); ossEntity.setCreatedBy(user.getUsername()); - ossEntity.setFileName(fileName); + ossEntity.setFileName(fileName+suffix); ossEntity.setNewFileName(newFileName); ossEntity.setCreateDate(new Date()); sysOssService.save(ossEntity); @@ -142,5 +143,21 @@ public class SysFtpController extends AbstractController { } } - + /** + * @Method upload + * @Description: FTP文件下载 + * @author zuowenwen + * @Version 1.0 + * @param id + * @param response + * @return com.gaotao.common.utils.R + * @throws + * @date 2021/9/29 + */ + @GetMapping("/downFtpFile") + public R upload(@RequestParam("ossEntity") Long id ,HttpServletResponse response){ + SysOssEntity resultData =sysOssService.getById(id); + R r = FTPUtils.downFtpFile("",resultData.getNewFileName(),resultData.getFileName() ,response); + return r; + } } diff --git a/src/main/java/com/gaotao/modules/ftp/util/FTPUtils.java b/src/main/java/com/gaotao/modules/ftp/util/FTPUtils.java index 113b252..2212651 100644 --- a/src/main/java/com/gaotao/modules/ftp/util/FTPUtils.java +++ b/src/main/java/com/gaotao/modules/ftp/util/FTPUtils.java @@ -18,7 +18,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; +import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; /** * @@ -396,4 +400,104 @@ public class FTPUtils { } return responseData; } + + public static R downFtpFile( String path, String fileName, String newFileName, HttpServletResponse response){ + R r = new R(); + FTPClient ftpClient = getFTPClient(); + //判断链接是否关闭 + if(!ftpClient.isConnected()){ + log.info("ftp链接出错!链接已关闭!"); + r.put("msg" ,"ftp链接出错!"); + r.put("success", false); + return r; + } + //进入工作空间 + boolean flag = true; + try { + ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); + if(path == null || "".equals(path)){ + path = "/"; + } + String name=new String(path.getBytes("UTF-8"),"iso-8859-1"); + flag = ftpClient.changeWorkingDirectory(name); +// flag = ftpClient.changeWorkingDirectory("/"); + if(!flag){ + log.info("ftp链接出错!文件夹不存在!"); + r.put("msg" ,"文件件不存在!"); + r.put("success", false); + return r; + } + //获取当前目录下的所有文件名称 + ftpClient.sendCommand("OPTS UTF8 ON"); + FTPFile[] ftpFiles = ftpClient.listFiles(); + //文件存在是否存在的标记 + boolean isExist = false; + //循环判断文件 + for(int i = 0; i0){ //把文件流写到缓冲区里 + toClient.write(buffer,0,length); + } + toClient.write(buffer); + toClient.flush(); + fis.close(); + toClient.close(); + log.info("文件下载完成!文件名称:"+fileName); + break; + } + } + ftpClient.completePendingCommand(); + if(isExist){ + r.put("msg" ,"ftp下载成功!"); + r.put("success", true); + }else{ + r.put("msg" ,"ftp下载失败!"); + r.put("success", false); + } + } catch (IOException e) { + log.info("ftp下载出错!错误信息:"+e.getMessage()); + // TODO Auto-generated catch block + e.printStackTrace(); + }finally { + + //关闭流和链接 + try { +// if(fos!=null){ +// fos.close(); +// +// } + if(ftpClient!=null){ + ftpClient.logout(); +// ftpClient.disconnect(); + } + } catch (IOException e) { + log.info("关闭流和链接出错!错误信息:"+e.getMessage()); + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + return r; + } }