FTP服务器打包下载文件的步骤

  介绍

这篇文章主要讲解了“FTP服务器打包下载文件的步骤”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“FTP服务器打包下载文件的步骤”吧!

需求:从FTP服务器打包下载文件

解决步骤:1。从FTP服务器把各个文件下载到本地服务器(一般是安装tomcat的服务器,项目自己电脑跑的本地服务器就是自己电脑)指定目录中

2。在本地服务器打包下载好的文件夹打包,返回打包好文件的zip

3. zip文件用流写入反应,达到用户下载效果

准备文件:

//,封装所有需要打包下载的文件地址请求类
  public  class  DownloadPackageReq  implements  Serializable {//,本地服务器临时存放目录名(尽量唯一.eg:“menutree20200904112125"),,,, private  String  localTempDirName;,//,打包下载本地服务器文件夹名字private  List, downloadPackageListReqList;,//,需要下载所有文件路径和名称
  }
//, FTPClientUtils: ftp工具类
  public  static  FTPClientUtils  init (), {,, FTPClientUtils  ftp =, new  FTPClientUtils ();,,, ftp.setHost(主机);,,,ftp.setPort(港口);,,,ftp.setUsername(用户名),,,,ftp.setPassword(密码);,,,ftp.setBinaryTransfer(真正);,,,ftp.setPassiveMode(假);,,,ftp.setEncoding (“utf-8");,,, return  ftp;
  }
/* *, *,下载一个远程文件到本地的指定文件,*,
  ,* @param  remoteAbsoluteFile  *,,,,,,,,,,,,远程文件名(包括完整路径,例如:/MTL/测试/menutree_attachment/file.xlsx), *, @param  localAbsoluteFile  *,,,,,,,,,,,,本地文件名(包括完整路径),*,@param  autoClose  *,,,,,,,,,,,,是否自动关闭当前连接,*,
  ,* @return 成功时,返回真,失败返回false  *, @throws  Exception  */public  boolean 得到(String  remoteAbsoluteFile, String  localAbsoluteFile,, boolean  autoClose), throws  Exception  {,, OutputStream  output =,零;,,,try  {
  ,,,,,output =, new  FileOutputStream (localAbsoluteFile);,,,,,, return 得到(remoteAbsoluteFile、,输出,autoClose);
  ,,},catch  (FileNotFoundException  e), {,,,,, throw  new 例外(“local  file  not 干净自己的发现,,e);
  ,,},finally  {,,,,, try  {,,,,,,,, if  (output  !=, null), {
  ,,,,,,,,,,,output.close ();
  ,,,,,,,,}
  ,,,,,},catch  (IOException  e), {,,,,,,,, throw  new 例外(“简直# 39;t  close  FileOutputStream干净,,e);
  ,,,,,}
  ,,}
  }
/* *, *,下载一个远程文件到指定的流,处理完后记得关闭流,*,
  ,* @param  remoteAbsoluteFile  *, @param  output  *, @param  autoClose  *, @return  *, @throws  Exception  */public  boolean 得到(String  remoteAbsoluteFile, OutputStream 输出,boolean  autoClose), throws  Exception  {,, try  {,,,,, FTPClient  FTPClient =, getFTPClient(),,,,,,,//,处理传输,,,,,,return  ftpClient.retrieveFile (remoteAbsoluteFile,输出);
  ,,},catch  (IOException  e), {,,,,, throw  new 例外(“简直# 39;t  get  file 得到干净自己的服务器,,e);
  ,,},finally  {,,,,, if  (autoClose), {
  ,,,,,,,,断开();,//,关闭链接,,,,,,}
  ,,}
  }

第一步:

 public  File  downloadMenuTreeAttachment (Integer  menutreeId), throws  Exception  {
  ,,,//,从数据库拿到menutreeId对应的所有文件地址List, resourcesMenutreeLists =, resourcesMenutreeListMapper.selExistingAttachment (menutreeId); DownloadPackageReq  req =, new  DownloadPackageReq (); if  (CollectionUtils.isNotEmpty (resourcesMenutreeLists)), {req.setLocalTempDirName (resourcesMenutreeLists.get (0) .getMenutreeName (), +, DateUtils.dateTimeNow ()); List, dpList =, new  ArrayList<在();为(ResourcesMenutreeListVo  temp : resourcesMenutreeLists), {DownloadPackageListReq  dpReq =, new  DownloadPackageListReq ();
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

FTP服务器打包下载文件的步骤