Java 批量文件不打包下载_【Java】Java批量文件打包下载zip
/*
* 另存为
*/
@RequestMapping("/saveAs.do")
public @ResponseBody
void saveAs(String filePath, String fileName) {
try {
File file = new File(filePath);
// 设置文件MIME类型
getResponse().setContentType(getMIMEType(file));
// 设置Content-Disposition
getResponse().setHeader(
"Content-Disposition",
"attachment;filename="
+ URLEncoder.encode(fileName, "UTF-8"));
// 获取目标文件的绝对路径
String fullFileName = getRealPath("/upload/" + filePath);
// System.out.println(fullFileName);
// 读取文件
InputStream ins = new FileInputStream(fullFileName);
// 放到缓冲流里面
BufferedInputStream bins = new BufferedInputStream(ins);
// 获取文件输出IO流
// 读取目标文件,通过response将目标文件写到客户端
OutputStream outs = getResponse().getOutputStream();
BufferedOutputStream bouts = new BufferedOutputStream(outs);
// 写文件
int bytesRead = 0;
byte[] buffer = new byte[8192];
// 开始向网络传输文件流
while ((bytesRead = bins.read(buffer, 0, 8192)) != -1) {
bouts.write(buffer, 0, bytesRead);
}
bouts.flush();// 这里一定要调用flush()方法
ins.close();
bins.close();
outs.close();
bouts.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 批量下载另存为
*/
@RequestMapping("/batDownload.do")
public @ResponseBody
void batDownload(String filePaths, String fileNames) {
String tmpFileName = "work.zip";
byte[] buffer = new byte[1024];
String strZipPath = getRealPath("/upload/work/"+tmpFileName);
try {
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
strZipPath));
String[] files=filePaths.split("\\|",-1);
String[] names=fileNames.split("\\|",-1);
// 下载的文件集合
for (int i = 0; i < files.length; i++) {
FileInputStream fis = new FileInputStream(getRealPath("/upload/"+files[i]));
out.putNextEntry(new ZipEntry(names[i]));
//设置压缩文件内的字符编码,不然会变成乱码
out.setEncoding("GBK");
int len;
// 读入需要下载的文件的内容,打包到zip文件
while ((len = fis.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
out.closeEntry();
fis.close();
}
out.close();
saveAs("work/"+tmpFileName, tmpFileName);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 根据文件后缀名获得对应的MIME类型。
*
* @param file
*/
private String getMIMEType(File file) {
String type = "*/*";
String fName = file.getName();
// 获取后缀名前的分隔符"."在fName中的位置。
int dotIndex = fName.lastIndexOf(".");
if (dotIndex < 0) {
return type;
}
/* 获取文件的后缀名 */
String end = fName.substring(dotIndex, fName.length()).toLowerCase();
if (end == "")
return type;
// 在MIME和文件类型的匹配表中找到对应的MIME类型。
for (int i = 0; i < MIME_MapTable.length; i++) {
if (end.equals(MIME_MapTable[i][0]))
type = MIME_MapTable[i][1];
}
return type;
}
private final String[][] MIME_MapTable = {
// {后缀名, MIME类型}
{ ".doc", "application/msword" },
{ ".docx",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" },
{ ".xls", "application/vnd.ms-excel" },
{ ".xlsx",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" },
{ ".pdf", "application/pdf" },
{ ".ppt", "application/vnd.ms-powerpoint" },
{ ".pptx",
"application/vnd.openxmlformats-officedocument.presentationml.presentation" },
{ ".txt", "text/plain" }, { ".wps", "application/vnd.ms-works" },
{ "", "*/*" } };
};
/file/batDownload.do"method="post">
function download(){
var objs=$("#fileFrame").contents().find("input[name='ckFile']:checked");
if(objs.length>0){
var filePaths="";
var fileNames="";
for(var i=0;i
filePaths+=$("#fileFrame").contents().find("#path_"+objs[i].value).val()+"|";
fileNames+=$("#fileFrame").contents().find("#a_"+objs[i].value).html()+"|";
}
filePaths=filePaths.substring(0,filePaths.length-1);
fileNames=fileNames.substring(0,fileNames.length-1);
$("#filePaths").val(filePaths);
$("#fileNames").val(fileNames);
$("#batForm").submit();
}else{
alert("请选择需要下载的文件!");
return false;
}
}
DEMO下载地址:https://dwz.cn/Jw3z6fVq
Java 批量文件不打包下载_【Java】Java批量文件打包下载zip相关推荐
- java文件客户端下载_使用Java写一个minio的客户端上传下载文件
标签:color ati tty java system wired format media param 前言: 确保已经安装了minio的服务端 代码: pom.x ...
- java文件流插入数据库_使用Java流查询数据库
java文件流插入数据库 在本文中,您将学习如何编写纯Java应用程序,这些应用程序能够处理现有数据库中的数据,而无需编写一行SQL(或类似的语言,例如HQL),而无需花费数小时将所有内容放在一起. ...
- java设计是什么软件下载_用Java设计下载软件
用Java设计下载软件 HTTP 协议的简介 HTTP协议是一种超文本传输协议(Hypertext Transfer Protocol),工作于网络应用层,自1990年起广泛应用于WWW 的全球信息服 ...
- java桌宠安装_桌宠软件下载_桌宠软件电脑版下载安装v2.0_全球下载
<桌宠>是一款桌面养宠物类型的软件,经过简单的设置就可以养一只宠物,你需要的放养桌面上的宠物,你上班的时候,电脑使用软件时间的积累,就能给它喂养饲养,让他快速的成长,这个过程也是十分的有趣 ...
- java中文件处理之图片_在Java 7中处理文件
java中文件处理之图片 以下是The Well-Grounded Java Developer的草稿的修改后的片段. 它使您快速了解与以前版本相比,在Java 7中操作文件要容易得多. 通过使用新的 ...
- java 文件追加 变大_用java写在doc中追加内容代码时,为什么它只能写入一次内容,后面都只是增加文件的大小,不增加内容啊?...
用java写在doc中追加内容代码时,为什么它只能写入一次内容,后面都只是增加文件的大小,不增加内容啊? 答案:1 信息版本:手机版 电脑版 解决时间 2020-07-02 16:34 已解决 20 ...
- java获取项目的相对路径_在JAVA文件中获取该项目的相对路径
1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://ww ...
- java web开源项目源码_适合Java新手的开源项目集合——在 GitHub 学编程
作者:HelloGitHub-老荀 当今互联网份额最大的编程语言是哪一个?是 Java!这两年一直有听说 Java 要不行了.在走下坡路了.没错,Java 的确在走下坡路,未来的事情的确不好说,但是瘦 ...
- java excel api及详细教程_针对Java Excel API及详细教程
时在java开发中会操作excel表格,其实操作起来也特别简单.这里把前期操作步骤说一下,本文会简单的介绍一个开放源码项目:Java Excel Api,使用它大家就可以方便的操作Excel文件了. ...
- java utf8 简繁转换 类库_在Java中进行中文繁体简体转换,基于OpenCC(Open Chinese Convert)方案...
一.OpenCC介绍 OpenCC (Open Chinese Convert,开放中文转换) 是一个用于中文简繁转换的开源项目,支持词汇级别的转换.异体字转换和地区习惯用词转换(中国大陆.台湾.香港 ...
最新文章
- 自定义注解-aop实现日志记录
- idea在Terminal中使用maven指令
- 小熊电器、九阳、苏泊尔们的“颜价比”被外卖小哥“打回原形”
- 15数码 java,15数码问题
- 160 - 38 CyberBlade.2
- 七年级计算机教学质量分析,七年级数学期末教学质量分析报告
- 指向函数的指针数组(C++)
- 设置不定宽高的元素垂直水平居中
- PHP合并2个数字键数组的值
- python基础教程doc_python基础教程之Word Cloud (词云) - Python|python基础教程|python入门|python教程...
- 计算机相关国内外文献,计算机外文文献
- android不能访问数据库文件,android下访问已存在的sqlite数据库文件的办法
- 整数拼接,拼成最小整数(暴力穷举)
- GitHub各种加速方式
- MTM量身定制系统 - 富友ERP产品 - 信息化推动服装行业管理软件升级
- T-SQL 基础学习 01
- 刷题记录:牛客NC20875舔狗舔到最后一无所有
- 军工企业信息化建设周涛_军工企业非密信息化
- 值得收藏|40000字 Matplotlib 实操干货
- ISO26262如何保证功能安全
热门文章
- linux下压缩和解压的命令汇总
- rust 手动关闭子线程_从零开始写 OS (9) —— 内核线程
- R 语言 download.file 的几点知识
- R语言可视化学习笔记之ggridges包
- 2020滑铁卢大学计算机科学学费,加拿大大学国际生学费上涨 滑铁卢大学学费上涨62%...
- Python使用matplotlib可视化散点图、可视化两个数值变量之间的关系(Scatter plot)
- python使用matplotlib可视化线图(line plot)、使用arrow函数在matplotlib可视化图像中添加箭头(drawing arrows in matplotlib)
- AttributeError: ‘FPDF‘ object has no attribute ‘unifontsubset‘
- R语言日期函数weekdays, months, quarters julian实战(星期几、那个月、那个季度、时间差)
- R语言dplyr包coalesce函数处理缺失值(missing value)实战