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

这篇具有很好参考价值的文章主要介绍了根据若依系统+minio实现批量下载附件并自动压缩成zip。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果实现:

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

 

分割!!!!

以下代码参考于

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方法

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

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

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

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

根据若依系统+minio实现批量下载附件并自动压缩成zip文章来源地址https://www.toymoban.com/news/detail-493692.html


到了这里,关于根据若依系统+minio实现批量下载附件并自动压缩成zip的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java 批量下载将多个文件(minio中存储)压缩成一个zip包

    我的需求是将minio中存储的文件按照查询条件查询出来统一压成一个zip包然后下载下来。 思路:针对这个需求,其实可以有多个思路,不过也大同小异,一般都是后端返回流文件前端再处理下载,也有少数是压缩成zip包之后直接给下载链接返回到前端,前端收到链接url直接

    2024年02月10日
    浏览(55)
  • 根据UIL下载图片/视频、根据URL自动下载图片/视频、GUI自动下载想要的图片

    目录 1,根据UIL下载图片/视频 2,根据URL自动下载图片/视频 3、GUI自动下载想要的图片 ①点击下载按钮,进行挨个下载 ②右击保存进行下载图片 4、图片或视频URL批量放入浏览器页面上 1,根据UIL下载图片/视频 效果如如下: 2,根据URL自动下载图片/视频   效果图如下:  i

    2024年02月13日
    浏览(54)
  • 利用Python中selenium库爬虫实现中国裁判文书网自动登录批量下载功能——最新版详细教程!!

    如果电脑上没有chrome浏览器或者当前chrome浏览器不是最新版,请先去chrome官网下载安装最新版chrome浏览器 https://www.google.cn/chrome/index.html 什么是ChromeDriver ChromeDriver是一种用于自动化和控制Google Chrome浏览器的工具。它是一个开源的项目,由Google维护,并提供给开发者使用。Ch

    2024年02月04日
    浏览(112)
  • WordPress实现评论后可显示内容中附件下载地址的方法

    本文实例讲述了WordPress实现评论后可显示内容中附件下载地址的方法。分享给大家供大家参考,具体如下: 最近在做一个项目的时候,有个需求就是希望WordPress网站文章内容里面附件可以评论后才可以下载。网络上面查了会,发现这个功能不难实现,写个简单的函数就可以了

    2023年04月24日
    浏览(40)
  • 最新ThinkPHP版本实现证书查询系统,实现批量数据导入,自动生成电子证书

    前提:朋友弄了一个培训机构,培训考试合格后,给发证书,需要一个证书查询系统。委托我给弄一个,花了几个晚上给写的证书查询系统。 实现功能: 前端按照姓名+手机号码进行证书查询 证书信息展示+证书展示,支持点击下载 后端证书信息录入+带一寸照片数据批量导入

    2024年01月23日
    浏览(47)
  • java实现浏览器下载附件时文件名中文乱码解决方案

    方案一:URLEncoder 解决 IE 和 谷歌浏览器的附件中文名问题。 如果客户端浏览器是 IE 浏览器 或者 是谷歌浏览器。我们需要使用 URLEncoder 类先对中文名进行 UTF-8 的编码 操作。 因为 IE 浏览器和谷歌浏览器收到含有编码后的字符串后会以 UTF-8 字符集进行解码显示。 方案二:B

    2024年03月09日
    浏览(64)
  • 若依前后端分离+Vue2+Element UI实现根据列数据展示不同页面的数据

    多个表格中存在同一字段,并且可通过该字段查到与之对应的数据。举个简单的例子,比如我有一个学生表、一个老师表、一个课程表,假设老师表和学生表里都有课程ID这一字段,那么我可以在课程表里通过课程ID来,查找需要上这门课的学生,以及教这门课的老师,并且在

    2024年01月19日
    浏览(46)
  • Selenium批量自动化获取并下载图片

    Selenium批量自动化获取并下载图片 在现代的Web开发中,自动化测试和数据抓取已经成为不可或缺的一部分。Selenium作为一款强大的自动化测试工具,不仅可以用于测试Web应用,还可以用于批量获取网页上的图片。本文将介绍如何使用Selenium批量自动化获取并下载图片。 一、准

    2024年01月22日
    浏览(43)
  • SpringBoot整合Minio(实现上传与下载)

    MinIO 是一款高性能、分布式的对象存储系统 . 它是一款软件产品, 可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。 1.导入环境所需要的依赖 2.application.yml中进行minio的配置 3.MinIoConfig.class 配置类  此类主要做一些连接Minio实例化对象的配置  4.AjaxResult.cl

    2024年02月07日
    浏览(58)
  • SpringBoot整合Minio实现文件上传、下载

    SpringBoot整合Minio实现文件上传、下载: 1,介绍高性能分布式存储文件服务Minio:Minio是 基于Go语言编写的对象存储服务 , 适合于存储大容量非结构化的数据 ,例如 图片、音频、视频、日志文件、备份数据和容器/虚拟机镜像等 ,而一个对象文件可以是任意大小,从几kb到最

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包