首页 > 其他分享 >根据若依系统+minio实现批量下载附件并自动压缩成zip

根据若依系统+minio实现批量下载附件并自动压缩成zip

时间:2024-05-28 17:48:20浏览次数:27  
标签:minio zip 压缩成 tableName ids param response String

效果实现:

 

 

分割!!!!

以下代码参考于

http://t.csdn.cn/4dUmDwg

话不多说 直接从后端开始

0.首先是pom依赖

<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.7</version>
</dependency>
1.后端Controller

ids和tableName为我业务需要(主要是查询数据库的附件表)

/**
* 下载多个文件转zip压缩包
* @param ids
* @param tableName
* @param response
* @throws Exception
*/
@RequestMapping("/dowloadToZip/{ids}/{tableName}")
public void dowloadToZip(@PathVariable Long[] ids,@PathVariable String tableName,HttpServletResponse response) throws Exception {
fileService.dowloadToZip(ids,tableName,response);
}
2.Service实现层

需要各位自己搜索minio关于下载的代码 也就是获取图片的inputStream流(因为各自代码逻辑不同)


/**
* 下载多个文件转zip压缩包
*
* @param ids
* @param tableName
* @param response
* @throws Exception
*/
@Override
public void dowloadToZip(Long[] ids, String tableName, HttpServletResponse response) throws Exception {
for (Long id : ids) {
int i = 0;
List<Attachment> attachments = attachmentService.attachmentSearch(id.toString(), tableName);
//如果有附件 进行zip处理
if (attachments != null && attachments.size() > 0) {
//被压缩文件流集合
InputStream[] srcFiles = new InputStream[attachments.size()];
//被压缩文件名称
String[] srcFileNames = new String[attachments.size()];
for (Attachment attachment : attachments) {
//以下代码为获取图片inputStream
String url = attachment.getUrl();
String[] names = url.split("/");
String name = tableName + "/" + names[names.length - 1];
GetObjectArgs args = GetObjectArgs.builder().bucket(minioConfig.getBucketName()).object(name).build();
InputStream inputStream = client.getObject(args);
if (inputStream == null) {
continue;
}
//塞入流数组中
srcFiles[i] = inputStream;
srcFileNames[i] = attachment.getAttachmentName();
i++;
}
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("下载.zip", "UTF-8"));
//多个文件压缩成压缩包返回
ZipUtil.zip(response.getOutputStream(), srcFileNames, srcFiles);
}

}
}
后端到这里就结束了,主要注意两个地方

1. ZipUtil是用pom导入依赖

2. 需要各自补充获取图片inputStream的代码 然后放入InputStream[]这个数组中即可

 

再其次回到前端

前端方面更简单

1. 找到前端项目的request.js 查看是否有download方法

 

如果有这个方法就简单 没有的话 各位自己copy吧!

2.找到 button批量下载证件 按钮 赋值@click="zipDownload" 并实现download代码块

 


————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_44780971/article/details/129985854

标签:minio,zip,压缩成,tableName,ids,param,response,String
From: https://www.cnblogs.com/fswhq/p/18129068

相关文章

  • 【Windows】本地磁盘挂载 Minio 桶
    目录1.软件安装安装winfsp支持安装rclone2.新建rclone远程存储类型S3服务类型验证方式地区终端地址ACL服务端加密KMS3.挂载存储盘1.软件安装安装winfsp支持下载地址或下载地址2文件为msi文件,下载后双击直接安装即可,可以选择安装路径安装rclone下载地址1或......
  • centos7安装bzip2
    centos7没有bzip2,无法解压bz2文件,于是只能下载安装了,两种方法:1.yum安装yumsearchbzip2 //查询安装包yum-yinstallbzip2-x86_642.源码安装下载bzip2  下载地址:http://www.bzip.org/downloads.html2.1格式是*.tar.gz 解压文件tar-zxf bzip2-1.0.6.tar.gz得到一......
  • 顶刊IJCV 2024 | EfficientSCI++:高效的视频单曝光压缩成像重建框架
    前言 来自浙江大学和西湖大学的研究人员提出了一种基于CNN-Transformer架构的高效、大尺度视频单曝光压缩成像重建算法EfficientSCI++。欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。本文转载自PaperWeekly仅用于学术分......
  • c# 文件压缩DotNetZip和SharpZipLib
     SharpZipLib和DotNetZip  DotNetZip示例usingSystem;usingSystem.IO;usingIonic.Zip;classProgram{staticvoidMain(string[]args){stringfolderToCompress=@"C:\path\to\your\folder";//要压缩的文件夹路径stringzi......
  • notepad++ 将JSON压缩成一行与JSON格式化
    参考文档:https://blog.csdn.net/weixin_43684328/article/details/109528085实际只有两部:第一步: 第二步:  ####################下面是转发参考的内容#######################无需插件,正则替换即可如果json中含有空格不想替换时可以分别替换回车和制表符{"DAT......
  • 十分钟精通MinIO:minio的原理、部署、操作
    一、认识MinIOMinio是一个简单易用的云存储服务,就像是一个放在网络上的大文件柜。想象一下,你有一间放满了各种文件的房间,有时候你需要把这些文件分享给朋友或者在不同地方访问它们。Minio就是帮你做到这一点的工具,它让你可以轻松地把文件上传到互联网上,这样无论你在哪里,只要......
  • 【简单介绍下7-Zip,什么是7-Zip?】
    ......
  • 把文件压缩成zip包并设置密码
    引入依赖<!--zip--><dependency><groupId>net.lingala.zip4j</groupId><artifactId>zip4j</artifactId><version>1.3.2</version></dependency>代码p......
  • Win11 24H2已在路上!微软发布最新RP预览版:支持创建7-zip文件、Wi-Fi 7等
    微软正紧锣密鼓地准备Windows11的下一个重大更新,即24H2版本。在正式发布前夕,微软向ReleasePreview的WindowsInsider项目成员发布了Windows11Version24H2(Build26100.712)预览版更新,邀请用户参与测试并反馈问题。这一预览版带来了一系列新功能和改进,其中包括对Wi-Fi7的支持......
  • 【MinIO】SpringBoot引入MinIO依赖遇到的一些问题:okhttp、kotlib-stdlib
    参考官方文档SDK:https://docs.min.io/docs/java-client-quickstart-guide.htmlMinIOJavaSDKisSimpleStorageService(akaS3)clienttoperformbucketandobjectoperationstoanyAmazonS3compatibleobjectstorageservice.MinIO依赖jar包下载地址:CentralReposi......