打包下载 java_java实现文件打包下载
业务场景:
从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实现文件打包下载相关推荐
- 压缩base 64字符串_ftp下载多个文件,ftp下载多个文件打包成一个压缩包
在一些日常的网络批量维护工作中,经常需要使用ftp计划任务,定时上传或下载多个文件.对不太了解ftp命令和windows计划任务的新手来说,确实是一个很棘手的问题.今天我们来看看如何简单的实现这功能. ...
- FTP下载多个文件打包成一个压缩包
@RequestMapping("downloadsByplFromFTP") @ResponseBody public void downloadsByplFr ...
- php 生成zip并下载,PHP 实现文件打包成zip格式并下载
PHP 文件打包并下载 有个这样的需求,将多个文件打包成zip格式并下载到本地 可根据 ZipArchive这个类来实现此功能 我自己也研究了一下,然后把搞出来了 ,经测试绝对好用 话不多说直接上代码 ...
- python 打包exe_将python文件打包exe独立运行程序方法详解
首先需要安装pyinstaller库. pip install pyinstaller exe程序打包步骤 cmd 进入要编译的python文件所在的文件夹, 然后 pyinstaller -F he ...
- linux中文件打包压缩,linux在文件打包和压缩
1. 打包和压缩文件 linux现在经常使用gzip和bzip2要压缩的文件.tar压缩文件. 经常使用的扩展: *.gz gzip压缩文件 *.bz2 bzip2压缩的文件 *.tar t ...
- 实现微信小程序web-view内嵌H5中的下载功能(大文件切片下载)
实现微信小程序内嵌H5中的下载功能 一.项目场景: 难点 解决方案: 1.H5微信小程序: a.首先必不可少的是安装jweixin-module模块: b.在main.js中将依赖绑定: c.H5对应 ...
- python打包成可执行文件_python文件打包为exe可执行文件的方法
我自己常用Pyinstaller库打包 第一步: 安装pyinstaller库 pip install pyinstaller 第二步: 在py文件所在目录输入 mydemo.py是自己写的py文件 ...
- java 文件打包zip_java 多个文件打包zip
/** * 多个文件打包成zip */ public class ZipDemo { private static void create() throws Exception{ String pat ...
- linux 文件打包 tar,[技术]Linux文件打包tar命令详解
Windows下最常见的压缩文件只有两种:.zip和.rar.可是Linux就不同了,有.Z.bz2..gz..tar..tar.gz等众多的压缩文件名,它们分别对应了各种压缩打包命令.要了解这些压缩 ...
- IE浏览器下载不了文件或下载文件会直接打开
下载不了文件,以下方法设置 一. 重置IE: 1. 关闭所有Internet Explorer窗口. 2. 单击"WINDOWS R",在搜索框内输入inetcpl.cpl,按回车 ...
最新文章
- Auto ML自动调参
- showimg.php,layer弹出图片
- sqlite 使用 cte 及 递归的实现示例
- 自定义request_Spring Security 自定义登录认证(二)
- java矩形翻转_如何判断一个点在旋转后的矩形中
- Linux系统初学者的常见问题解决集结
- SPSS问卷信度分析
- Django REST framework 中文文档
- 千方百剂创建账套服务器文件,如何修改sql server 2000身份验证模式和系统管理员_数据库技巧...
- php会员中心页面,PhpCMS会员中心操作说明
- DID; PSM; DID-PSM
- Mysql数据库优化
- 斗地主服务器维护中,天天斗地主真人版进不了怎么办 登录不了解决方案
- 网络口碑推广的策略和实施技巧
- 无损音乐刻录成cd有意义吗_无损和CD不一样?无损音乐的“玄学”知多少?
- the little schemer 笔记(2)
- 《黑客帝国 THE MATRIX》——当你生活在代码的虚拟世界中
- ScreenFlow 8 for Mac(mac录屏软件)免激活版
- 配置办公室无线路由实现ip统一具体方式
- 欢迎扫码进群加入或关注ServiceComb社区