业务场景:

从A服务器通过SFTP将文件下载到应用服务器B,需要将文件从应用服务器B下载到用户本地(文件和应用都在B服务器)

想法:

1. 想要通过FTP连接B服务器下载,但是FTP只能下载到应用所在的本地,也就是只能下载到下载到B服务器,无法下载到用户本地。

2. 通过普通的下载方式,用文件流通过response下载,但是文件夹内有多个文件,无法同时下载

实现:

采用将多个文件打包下载

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//通过工号和日期去获取相应的文件夹路径

String usercode = request.getParameter("usercode");

String date = request.getParameter("date");

String formPath = "/tmp/ENongXian/"+usercode+"/"+date;

//遍历这个路径下的所有文件名

List fileNames = this.getFileName(formPath);

//如果找不到文件 返回not found file

if(fileNames == null||fileNames.size()==0){

PrintWriter out = response.getWriter();

response.setContentType("text/html; charset=GBK");//注意text/html,和application/html

out.print("

");

out.flush();

out.close();

}else{

//开始批量压缩下载

ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());

response.setContentType("APPLICATION/OCTET-STREAM");

response.setHeader("Content-Disposition","attachment; filename="+this.getZipFilename());

System.out.println("in BatchDownload................");

File[] files = new File[fileNames.size()];

for(int i=0;i

String filename = fileNames.get(i).toString();

files[i] = new File(formPath+"/"+filename);

}

将文件进行压缩

zipFile(files, "", zos);

zos.flush();

zos.close();

}

}

private void zipFile(File[] subs, String baseName, ZipOutputStream zos) throws IOException {

for (int i=0;i

File f=subs[i];

zos.putNextEntry(new ZipEntry(baseName + f.getName()));

FileInputStream fis = new FileInputStream(f);

byte[] buffer = new byte[1024];

int r = 0;

while ((r = fis.read(buffer)) != -1) {

zos.write(buffer, 0, r);

}

fis.close();

}

}

private String getZipFilename(){

Date date=new Date();

String s=date.getTime()+".zip";

return s;

}

public List getFileName(String filePath){

File file = new File(filePath);

List fileNameList = new ArrayList();

File[] fileList = file.listFiles();

if(fileList == null || fileList.length ==0){

return null;

}

for(int i=0;i

if("txt".equals(fileList[i].getName().substring(fileList[i].getName().lastIndexOf(".") + 1))){

continue;

}

if(fileList[i].isFile()){

String fileName = fileList[i].getName();

fileNameList.add(fileName);

}

}

return fileNameList;

}

打包下载 java_java实现文件打包下载相关推荐

  1. 压缩base 64字符串_ftp下载多个文件,ftp下载多个文件打包成一个压缩包

    在一些日常的网络批量维护工作中,经常需要使用ftp计划任务,定时上传或下载多个文件.对不太了解ftp命令和windows计划任务的新手来说,确实是一个很棘手的问题.今天我们来看看如何简单的实现这功能. ...

  2. FTP下载多个文件打包成一个压缩包

    @RequestMapping("downloadsByplFromFTP")     @ResponseBody     public  void downloadsByplFr ...

  3. php 生成zip并下载,PHP 实现文件打包成zip格式并下载

    PHP 文件打包并下载 有个这样的需求,将多个文件打包成zip格式并下载到本地 可根据 ZipArchive这个类来实现此功能 我自己也研究了一下,然后把搞出来了 ,经测试绝对好用 话不多说直接上代码 ...

  4. python 打包exe_将python文件打包exe独立运行程序方法详解

    首先需要安装pyinstaller库. pip install pyinstaller exe程序打包步骤 cmd 进入要编译的python文件所在的文件夹, 然后 pyinstaller -F he ...

  5. linux中文件打包压缩,linux在文件打包和压缩

    1. 打包和压缩文件 linux现在经常使用gzip和bzip2要压缩的文件.tar压缩文件. 经常使用的扩展: *.gz   gzip压缩文件 *.bz2  bzip2压缩的文件 *.tar   t ...

  6. 实现微信小程序web-view内嵌H5中的下载功能(大文件切片下载)

    实现微信小程序内嵌H5中的下载功能 一.项目场景: 难点 解决方案: 1.H5微信小程序: a.首先必不可少的是安装jweixin-module模块: b.在main.js中将依赖绑定: c.H5对应 ...

  7. python打包成可执行文件_python文件打包为exe可执行文件的方法

    我自己常用Pyinstaller库打包 第一步: 安装pyinstaller库 pip install pyinstaller 第二步: 在py文件所在目录输入 mydemo.py是自己写的py文件 ...

  8. java 文件打包zip_java 多个文件打包zip

    /** * 多个文件打包成zip */ public class ZipDemo { private static void create() throws Exception{ String pat ...

  9. linux 文件打包 tar,[技术]Linux文件打包tar命令详解

    Windows下最常见的压缩文件只有两种:.zip和.rar.可是Linux就不同了,有.Z.bz2..gz..tar..tar.gz等众多的压缩文件名,它们分别对应了各种压缩打包命令.要了解这些压缩 ...

  10. IE浏览器下载不了文件或下载文件会直接打开

    下载不了文件,以下方法设置 一. 重置IE: 1. 关闭所有Internet Explorer窗口. 2. 单击"WINDOWS R",在搜索框内输入inetcpl.cpl,按回车 ...

最新文章

  1. Auto ML自动调参
  2. showimg.php,layer弹出图片
  3. sqlite 使用 cte 及 递归的实现示例
  4. 自定义request_Spring Security 自定义登录认证(二)
  5. java矩形翻转_如何判断一个点在旋转后的矩形中
  6. Linux系统初学者的常见问题解决集结
  7. SPSS问卷信度分析
  8. Django REST framework 中文文档
  9. 千方百剂创建账套服务器文件,如何修改sql server 2000身份验证模式和系统管理员_数据库技巧...
  10. php会员中心页面,PhpCMS会员中心操作说明
  11. DID; PSM; DID-PSM
  12. Mysql数据库优化
  13. 斗地主服务器维护中,天天斗地主真人版进不了怎么办 登录不了解决方案
  14. 网络口碑推广的策略和实施技巧
  15. 无损音乐刻录成cd有意义吗_无损和CD不一样?无损音乐的“玄学”知多少?
  16. the little schemer 笔记(2)
  17. 《黑客帝国 THE MATRIX》——当你生活在代码的虚拟世界中
  18. ScreenFlow 8 for Mac(mac录屏软件)免激活版
  19. 配置办公室无线路由实现ip统一具体方式
  20. 欢迎扫码进群加入或关注ServiceComb社区

热门文章

  1. 如何将Adobe Photoshop(PS)完全卸载
  2. 韦根协议 wiegand
  3. IT大学生成长周报 | 第 1 期
  4. SVN忽略指定文件或文件夹的提交
  5. 可爱女人,等你下课——CDN美人串烧
  6. urule客户端和服务器配置
  7. matlab流体力学分析,matlab流体力学
  8. 华硕服务器主板安装系统提示驱动,肿么安装电脑的主板芯片组驱动程序步骤华硕主板intel芯片...
  9. Origin如何写入希腊字母
  10. html中复选框只能选一个,HTML选择三个不同的复选框并显示它们