页面端:
function jqchk(){ //jquery获取复选框值
var s='';
$('input[name="zydName"]:checked').each(function(){
s+=$(this).val()+',';
});
if(s.length>0)
{
s=s.substring(0,s.length-1);
location.href="$!webPath/usercenter/show/res/downAll.htm?ids="+s+"";
}
else
{
alert("请选中需要下载的资源单!");
}
}
服务端:
// 下载选中的
@SuppressWarnings({ "deprecation", "rawtypes", "null", "unchecked" })
@RequestMapping({ "/downAll.htm" })
public void downExcelAll(HttpServletRequest request,
HttpServletResponse response, String ids) {
String[] strID = null;
if (ids != null) {
strID = ids.split(",");
}
String accessoryId = "";
String tmpFilePath = "";
List filePaths = new ArrayList();
if (strID != null) {
for (int i = 0; i < strID.length; i++) {
Res res = resImpl.getObjById(strID[i]);
if (CommUtil.isNotNull(res)) {
accessoryId = res.getAccessoryId();
if (CommUtil.isNotNull(accessoryId)) {
Accessory accessory = accessoryService
.getObjById(accessoryId);
String ac_path = accessory.getAcPath();
String fileName = accessory.getName();
if (tmpFilePath == null || "".equals(tmpFilePath)) {
tmpFilePath = request.getRealPath("") + ac_path;
}
String filePath = request.getRealPath("") + ac_path
+ fileName;
filePaths.add(filePath);
int downNum = res.getDownNum();
downNum += 1;
res.setDownNum(downNum);
resImpl.update(res);
}
}
}
}
this.downAll(request, response, tmpFilePath, filePaths);
}
@SuppressWarnings({ "rawtypes", "unchecked", "null" })
public String downAll(HttpServletRequest request,
HttpServletResponse response,String tmpFilePath,List filePaths) {
//生成的ZIP文件名为Demo.zip
String tmpFileName = "zyd.zip";
byte[] buffer = new byte[1024];
String strZipPath = tmpFilePath + tmpFileName;
try {
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(strZipPath));
List fielpathss=new ArrayList();
if(filePaths!=null)
{
for (int i = 0; i < filePaths.size(); i++) {
if(new File(filePaths.get(i).toString()).exists())
{
fielpathss.add(filePaths.get(i));
}
}
}
// 需要同时下载多个文件
File[] file1 =null;
if(fielpathss.size()>0)
{
file1=new File[fielpathss.size()];
for (int i = 0; i < fielpathss.size(); i++) {
file1[i]=new File(fielpathss.get(i).toString());
}
}
if(file1!=null)
{
for (int i = 0; i < file1.length; i++) {
FileInputStream fis = new FileInputStream(file1[i]);
out.putNextEntry(new ZipEntry(file1[i].getName()));
//设置压缩文件内的字符编码,不然会变成乱码
out.setEncoding("UTF-8");
int len;
// 读入需要下载的文件的内容,打包到zip文件
while ((len = fis.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
out.closeEntry();
fis.close();
}
out.close();
}
this.downFile(response,request,strZipPath,tmpFileName);
} catch (Exception e) {
logger.error("文件下载出错", e);
}
return null;
}
/**
* 文件下载
* @param response
* @param str
*/
@SuppressWarnings("deprecation")
private void downFile(HttpServletResponse response,HttpServletRequest request,String str,String tmpFileName) {
try {
String path =str;
File file = new File(path);
if (file.exists()) {
InputStream ins = new FileInputStream(path);
BufferedInputStream bins = new BufferedInputStream(ins);// 放到缓冲流里面
OutputStream outs = response.getOutputStream();// 获取文件输出IO流
BufferedOutputStream bouts = new BufferedOutputStream(outs);
response.setContentType("application/x-download");// 设置response内容的类型
response.setHeader("Content-disposition","attachment;filename="+URLEncoder.encode(tmpFileName, "UTF-8"));// 设置头部信息
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();
} else {
response.sendRedirect(""+request.getRealPath("")+"/usercenter/show/res/downerror.htm");
}
} catch (IOException e) {
e.printStackTrace();
}
}
pom依赖:
<dependency>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.0</version>
</dependency>
分享到:
相关推荐
在Java编程中,将多个文件压缩成一个ZIP文件并实现下载是一个常见的任务,尤其是在处理大量数据或文件分发时。这个过程涉及到Java的I/O流、压缩和HTTP响应的使用。下面将详细介绍如何实现这个功能。 首先,我们需要...
### Java将文件压缩为ZIP的方法 #### 知识点概览 本文主要介绍如何使用Java实现文件的ZIP压缩功能,并提供了完整的代码示例。通过学习本文,你可以掌握以下几个知识点: 1. 使用`java.util.zip`包中的类进行文件...
### Spring Boot中使用Java实现文件批量下载与压缩功能 #### 一、背景介绍 在Web应用开发中,经常需要提供给用户批量下载的功能,尤其是在文件管理或者文档分享等场景下。传统的做法是一次只下载一个文件,这不仅...
Java后台批量下载文件并压缩成zip下载的方法是指在Java后台中批量下载文件,并将其压缩成zip文件下载到本地桌面。该方法具有重要的参考价值,感兴趣的小伙伴们可以参考以下内容。 java后台批量下载文件 在Java后台...
总之,Java实现视频压缩涉及到多媒体处理、图像编码、数据封装等多个技术环节,虽然Java不是首选的视频处理语言,但借助适当的库和接口,仍然能够构建功能强大的视频压缩系统。对于想要深入这一领域的开发者来说,...
Java文件分割压缩是一种常见的操作,尤其在处理大数据或者网络传输时非常有用,因为单个大文件可能会导致处理效率低或传输困难。以下是一些相关的Java编程知识点: 1. **文件I/O操作**:在Java中,`java.io`包提供...
Java 实现批量下载并压缩文件是一项常见的任务,尤其在处理大量数据存储时。在这个过程中,主要涉及以下几个关键知识点: 1. **文件下载**:在Java中,文件下载通常基于网络I/O流,通过发送HTTP请求获取远程服务器...
综上所述,这个实践项目涵盖了Java文件压缩与解压缩的核心技术,是学习和理解Java I/O和压缩库的宝贵资源。通过阅读源代码和论文,开发者不仅可以学习如何在Java中进行文件压缩,还能了解到如何将这些技术应用于实际...
zip,然后下载删除源文件与压缩文件。 3、可以指定文件都为最后生成为zip文件下载,且删除源文件。 1、压缩文件或者目录(只是压缩不删除):zipFileOrDirectory 2、程序自动判断如果是文件那么就是源文件下载,...
java实现多个文件压缩
Java调用Zip类批量压缩多个文件,此前有一个是压缩单个文件,也可参考,相关代码中可找到此源码。 public class ZipDemo extends JFrame{ JFileChooser fileChooser; //文件选择器 JList fileList; //待...
在Java编程中,压缩和解压缩文件是常见的任务,特别是在处理大量数据或传输文件时。本文将深入探讨如何使用Java来处理压缩文件,特别是针对标题提及的“java压缩文件以及文件夹”。我们将主要关注`ZipCompressor....
java代码实现单个或多个文件压缩成rar包,本地要安装winRar插件。
通过以上步骤,你已经实现了在Java中导出CSV文件,然后将其压缩成ZIP格式,并提供了一个Web接口供用户下载。确保正确配置你的服务器和文件路径,以适应实际项目的需求。同时,不要忘记处理可能出现的异常,以确保...
这种技术通常被称为“文件合并与压缩”,它将多个js和css文件合并为一个文件,并去除其中不必要的空白、注释以及进行其他优化,以减小文件大小。下面将详细介绍这一过程及其相关知识点。 首先,我们要了解为什么要...
这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。下面我们将深入探讨这些知识点。 首先,FTP上传和下载是Java中常见的任务,通常通过`java...
java批量压缩文件跟文件夹,目前还不支持中文名,后期会改进,谢谢