java文件批量下载
/**
* 批量下载控制
* @param response
* @param request
*/
@RequestMapping(value = “/file/batDownload”, method = RequestMethod.POST)
public void downloadAllFilePost(HttpServletResponse response,HttpServletRequest request) {
this.downloadAllFile(response,request);
}
/*** 批量下载--读取文件并且压缩成一个文件* @param response* @param request*/
public void downloadAllFile(HttpServletResponse response,HttpServletRequest request) {String downloadName = "XXXXXX平台附件.zip";try {response.setContentType("multipart/form-data");response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(downloadName, "UTF-8"));} catch (UnsupportedEncodingException e) {System.out.println("下载文件名编码时出现错误.");e.getMessage();}OutputStream outputStream = null;ZipOutputStream zos = null;try {outputStream = response.getOutputStream();zos = new ZipOutputStream(outputStream);// 将文件流写入zip中downloadTolocal(zos,request);} catch (IOException e) {System.out.println("downloadAllFile-XXXXXX平台下载全部附件失败");e.getMessage();}finally {if(zos != null) {try {zos.close();} catch (Exception e2) {System.out.println("关闭输入流时出现错误");}}if(outputStream != null) {try {outputStream.close();} catch (Exception e2) {System.out.println("关闭输入流时出现错误");e2.printStackTrace();}}}}
/**
下载压缩文件
@param zos
@param request
@throws IOException
*/
private void downloadTolocal(ZipOutputStream zos,HttpServletRequest request) throws IOException {
//获取文件信息(此处为业务代码,可根据自己的需要替换)
String fileId=request.getParameter(“fileId”);
String[] strArray = fileId.split(",");
List filenames=new ArrayList<>();
String serverName = System.getProperty(“os.name”);
String serverSeparator = System.getProperty(“file.separator”);
if(“Linux”.equals(serverName) || “/”.equals(serverSeparator)){
//解决linux中文乱码
zos.setEncoding(System.getProperty(“sun.jnu.encoding”));
}
for (int i = 0; i < strArray.length; i++) {
MtrbFileModel fileModel = commonService.get(MtrbFileModel.class, strArray[i]);
String fileName =fileModel.getFilename();
filenames.add(fileName);
//文件名称(带后缀)
int sum=0;
if(filenames.size()>0){
for(int j=0;j<filenames.size();j++){
if(filenames.get(j).equals(fileName) && i !=j){
sum++;
}
}
}
if(sum>0){
String nameBefore=org.apache.commons.lang3.StringUtils.substringBeforeLast(fileName, “.”);
String nameAfter=org.apache.commons.lang3.StringUtils.substringAfterLast(fileName, “.”);
fileName=nameBefore+"("+sum+")."+nameAfter;
}
InputStream is = null;
BufferedInputStream in = null;byte[] buffer = new byte[1024];int len;//创建zip实体(一个文件对应一个ZipEntry)ZipEntry entry = new ZipEntry(fileName);try {//获取需要下载的文件流is = new FileInputStream(rootPath+fileModel.getFileurl());in = new BufferedInputStream(is);//解决linux中文乱码if("Linux".equals(serverName) || "/".equals(serverSeparator)){entry.setUnixMode(644);}zos.putNextEntry(entry);//文件流循环写入ZipOutputStreamwhile ((len = in.read(buffer)) != -1 ) {zos.write(buffer, 0, len);}} catch (Exception e) {System.out.println("XXXXXX--下载全部附件--压缩文件出错");}finally {if(entry != null) {try {zos.closeEntry();} catch (Exception e2) {System.out.println("XXXXXX下载全部附件--zip实体关闭失败");}}if(in != null) {try {in.close();} catch (Exception e2) {System.out.println("XXXXXX平台下载全部附件--文件输入流关闭失败");}}if(is != null) {try {is.close();}catch (Exception e) {System.out.println("XXXXXX平台下载全部附件--输入缓冲流关闭失败");}}}
}
}
java文件批量下载相关推荐
- java文件批量下载打包成zip
1.首先html页面获取当前需要下载文件的id集合将转成字符串形式传递到后台. ................ 2 .下面就是获取字符串之后的批量下载/*** 多文件批量下载压缩成zip**root ...
- 【java】 文件批量下载并压缩为zip压缩包
[java] 文件批量下载并压缩为zip压缩包 java常用的压缩技术 java中常见实现压缩与解压 业务场景 代码实现 注意点 java常用的压缩技术 常见的压缩格式有很多种,例如:zip.rar. ...
- 关于Java实现批量下载MinIO指定目录下的所有文件
关于Java实现批量下载MinIO指定目录下的所有文件 Straightforward String bucketName = "bucket01";// 检查'mybucket' ...
- java web批量下载_JAVAWEB批量文件下载器
[实例简介] JAVAWEB批量文件下载器,实现文件批量下载,队列方式,一个下载完成,再下载另一个. [实例截图] [核心代码] 7a8f7e4d-75f1-489b-9ef8-b42f3b6da24 ...
- 多文件批量下载打包成.zip
多文件批量下载打包成.zip //下载文件打包成zip压缩包@GetMapping("/zip/{id}")public void zip(@PathVariable(" ...
- java文件批量导出
java文件批量导出 废话不多说直接上代码 //获取文件名字 private String getFileTypeByUrl(String url) { final String[] split = ...
- 亿彩文件批量下载器 v3.0
简介: 亿彩文件批量下载器,主要用于对已知的网络文件的Url,将其批量下载到本地上,并根据需要自动更名下载后的文件,功能丰富强大;支撑大容量几十万几百万条的下载,支持特殊网址的导入,支持保留网络路径结 ...
- JavaScript (mp3、mp4、jpg、doc、txt、rar)单个、多文件批量下载
JavaScript 多文件下载 HTML5中 a 标签新增了一个属性 download,一般情况下,用户点击a链接浏览器会打开对应的链接地址,如果链接地址是一个文件如(xxx.rar.xxx.jpg ...
- java文件断点续传下载或视频播放
java文件断点续传下载或视频播放 代码 代码 @GetMapping("/download")public void download(Long id, HttpServletR ...
最新文章
- SoapUi测试,测试相关问答知识
- zsh与oh-my-zsh
- 无限城市助力智慧城市 挥毫创新3.0时代
- 深度学习核心技术精讲100篇(六十)-深度学习分类算法之神经网络
- jquery的closest方法和parents方法的区别
- Math中的常用方法
- tcp retransmission原因
- beta分布的采样或抽样(java程序)
- Android开发笔记(三十五)页面布局视图
- 谁说数据分析很难?看完这7大分析套路后,还学不会的来找我
- tidb 架构 ~Tidb学习系列(5)
- git常用命令--tag
- 数字图像处理与分析---指纹图像增强(Python)
- IPtables中SNAT、DNAT和MASQUERADE的含义
- python中开方和平方
- 本地音乐如何导入apple_如何将自己的音乐添加到Apple Music
- 如何在H3C路由器使用ACL来管理网络安全
- python登录qq定时发消息_python自动发送qq消息
- openStack cluster chk
- VMware中安装Ubuntu出现多个vmdk文件原因