/**
* 批量下载控制
* @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文件批量下载相关推荐

  1. java文件批量下载打包成zip

    1.首先html页面获取当前需要下载文件的id集合将转成字符串形式传递到后台. ................ 2 .下面就是获取字符串之后的批量下载/*** 多文件批量下载压缩成zip**root ...

  2. 【java】 文件批量下载并压缩为zip压缩包

    [java] 文件批量下载并压缩为zip压缩包 java常用的压缩技术 java中常见实现压缩与解压 业务场景 代码实现 注意点 java常用的压缩技术 常见的压缩格式有很多种,例如:zip.rar. ...

  3. 关于Java实现批量下载MinIO指定目录下的所有文件

    关于Java实现批量下载MinIO指定目录下的所有文件 Straightforward String bucketName = "bucket01";// 检查'mybucket' ...

  4. java web批量下载_JAVAWEB批量文件下载器

    [实例简介] JAVAWEB批量文件下载器,实现文件批量下载,队列方式,一个下载完成,再下载另一个. [实例截图] [核心代码] 7a8f7e4d-75f1-489b-9ef8-b42f3b6da24 ...

  5. 多文件批量下载打包成.zip

    多文件批量下载打包成.zip //下载文件打包成zip压缩包@GetMapping("/zip/{id}")public void zip(@PathVariable(" ...

  6. java文件批量导出

    java文件批量导出 废话不多说直接上代码 //获取文件名字 private String getFileTypeByUrl(String url) { final String[] split = ...

  7. 亿彩文件批量下载器 v3.0

    简介: 亿彩文件批量下载器,主要用于对已知的网络文件的Url,将其批量下载到本地上,并根据需要自动更名下载后的文件,功能丰富强大;支撑大容量几十万几百万条的下载,支持特殊网址的导入,支持保留网络路径结 ...

  8. JavaScript (mp3、mp4、jpg、doc、txt、rar)单个、多文件批量下载

    JavaScript 多文件下载 HTML5中 a 标签新增了一个属性 download,一般情况下,用户点击a链接浏览器会打开对应的链接地址,如果链接地址是一个文件如(xxx.rar.xxx.jpg ...

  9. java文件断点续传下载或视频播放

    java文件断点续传下载或视频播放 代码 代码 @GetMapping("/download")public void download(Long id, HttpServletR ...

最新文章

  1. SoapUi测试,测试相关问答知识
  2. zsh与oh-my-zsh
  3. 无限城市助力智慧城市 挥毫创新3.0时代
  4. 深度学习核心技术精讲100篇(六十)-深度学习分类算法之神经网络
  5. jquery的closest方法和parents方法的区别
  6. Math中的常用方法
  7. tcp retransmission原因
  8. beta分布的采样或抽样(java程序)
  9. Android开发笔记(三十五)页面布局视图
  10. 谁说数据分析很难?看完这7大分析套路后,还学不会的来找我
  11. tidb 架构 ~Tidb学习系列(5)
  12. git常用命令--tag
  13. 数字图像处理与分析---指纹图像增强(Python)
  14. IPtables中SNAT、DNAT和MASQUERADE的含义
  15. python中开方和平方
  16. 本地音乐如何导入apple_如何将自己的音乐添加到Apple Music
  17. 如何在H3C路由器使用ACL来管理网络安全
  18. python登录qq定时发消息_python自动发送qq消息
  19. openStack cluster chk
  20. VMware中安装Ubuntu出现多个vmdk文件原因

热门文章

  1. “我爱背单词”beta版发布与使用说明
  2. Android解压ZIP
  3. AH名片簿客户通讯录管理软件3.78
  4. 为什么BAT海康华为谁也干不过谁?——迅雷创始人程浩关于人工智能的思考
  5. js 中文英文数字首字母混合排序
  6. 日本亚马逊不能访问怎么解决!
  7. 邮轮IPTV系统航线介绍天气船长等介绍快速搭建方案
  8. rtthread_scons简介
  9. js---开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者体重是否合适(身高:cm)
  10. 动态链接一:ELF文件格式