前言

文章中的web解压工具类结合了minio文件服务,上传解压文件过程中,先解压成文件流,再将解压的文件又上传到minio文件服务器上。(不同本地文件服务,可以直接用文件copy的方式,cpoy到服务器指定静态文件服务的文件路径下)

pom文件依赖

        <dependency><groupId>org.apache.commons</groupId><artifactId>commons-compress</artifactId><version>1.18</version></dependency><!--minio--><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>3.0.10</version></dependency>

调用 WebCompressUtil工具在线解压代码示例

      MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);// 检查存储桶是否已经存在boolean isExist = minioClient.bucketExists(bucketName);if (!isExist) {minioClient.makeBucket(bucketName);}// 拼接文件名String parentDir = genParentDir();String objectName = parentDir + file.getOriginalFilename();try {// 使用putObject上传一个文件到存储桶中。minioClient.putObject(bucketName, objectName, file.getInputStream(), file.getSize(), null, null, file.getContentType());} catch (Exception e) {e.printStackTrace();}String finalFileName=null;List<String> list = WebCompressUtil.unCompress(file, minioClient, bucketName, parentDir);

WebCompressUtil 工具类代码

import io.minio.MinioClient;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import org.springframework.web.multipart.MultipartFile;import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;/*** web 压缩解压工具*/
public class WebCompressUtil {private static final int BUFFER_SIZE = 2048;public static List<String> unTar(InputStream in, MinioClient minioClient, String bucketName, String parentDir) {List<String> fileNames = new ArrayList<>();try {TarArchiveInputStream tarIn = new TarArchiveInputStream(in, BUFFER_SIZE);TarArchiveEntry entry = null;while ((entry = tarIn.getNextTarEntry()) != null) {if (entry.isFile()) {minioClient.putObject(bucketName, parentDir + entry.getName(), tarIn, entry.getSize(), null, null, null);fileNames.add(parentDir + entry.getName());}}} catch (Exception e) {e.printStackTrace();}return fileNames;}public static List<String> unZip(InputStream in, MinioClient minioClient, String bucketName, String parentDir) {List<String> fileNames = new ArrayList<>();try {// 创建客户端ZipArchiveInputStream is = new ZipArchiveInputStream(new BufferedInputStream(in, BUFFER_SIZE));ZipArchiveEntry entry = null;while ((entry = is.getNextZipEntry()) != null) {if (!entry.isDirectory()) {try {// 使用putObject上传一个文件到存储桶中。minioClient.putObject(bucketName, parentDir + entry.getName(), is, entry.getSize(), null, null, null);} catch (Exception e) {e.printStackTrace();}fileNames.add(parentDir + entry.getName());}}} catch (Exception e) {e.printStackTrace();}return fileNames;}/*** 解压方法** @param file 解压文件* @return* @throws Exception*/public static List<String> unCompress(MultipartFile file, MinioClient minioClient, String bucketName, String parentDir) {List<String> ret = new ArrayList<>();try {String fileName = file.getOriginalFilename();String upperName = fileName.toUpperCase();if (upperName.endsWith(".ZIP")) {ret = unZip(file.getInputStream(), minioClient, bucketName, parentDir);} else if (upperName.endsWith(".TAR")) {ret = unTar(file.getInputStream(), minioClient, bucketName, parentDir);}} catch (IOException e) {e.printStackTrace();}return ret;}}

Java实现minio文件服务web在线解压上传工具类相关推荐

  1. 解压上传zip文件并获取excel表数据

    1.maven <!-- 解压rar --><dependency><groupId>com.github.junrar</groupId><ar ...

  2. Java学习日记8:文件上传工具类的实现和服务器给客户端发送图片

    文件上传的工具类: 每次文件上传要写很多东西,把这些封装成一个工具类,以后用起来就会方便很多. 先创建一个类存储上传文件的信息: package com.upload; /*** 每上传成功一个文件的 ...

  3. 解压rar/zip工具类

    工作中需要上传压缩包,后台需要对压缩包进行解压,并在边解压边查找指定文件,并保存到list中. 有关判断是rar还是zip的类: package com.cykj.reports.util;impor ...

  4. spring boot 文件上传工具类(bug 已修改)

    以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来. 写的这个文件上传是在spring boot 2.0中测试的,测试了,可以正常上传,下面贴代码 第一步:引 ...

  5. JAVA工具类(13)---图片上传工具类

    package com.gcloud.common;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import ...

  6. 阿里云oss文件上传工具类

    阿里云oss文件上传工具类 阿里云oss 阿里云oss 导入文件阿里云oss的maven依赖 <!-- 阿里云oss依赖 --><dependency><groupId& ...

  7. FTP文件上传工具类

    import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.a ...

  8. java 图片合成 工具类_Java实现的图片上传工具类完整实例

    本文实例讲述了Java实现的图片上传工具类.分享给大家供大家参考,具体如下: package com.gcloud.common; import javax.imageio.ImageIO; impo ...

  9. 分享一个文件上传工具类

    文件上传状态枚举类: View Code 1 package com.hoo.enums; 2 3 4 5 /** 6 7 * <b>function:</b> 文件上传状态 ...

最新文章

  1. 微信小程序wx:for 的使用
  2. 产生任意区间内的均匀分布的随机整数序列
  3. 2019-1-17王志颖 c语言作业
  4. 前端有用JavaScript技巧
  5. 成为优秀的Java程序员要具备哪些技能?
  6. PAT 1014 Waiting in Line
  7. 几个ASP.NET小技巧
  8. 常见花材的固定的方法有哪些_固定无梁拱形屋顶的方法都有哪些呢?
  9. 线性支持向量分类机及其实现
  10. 【技术框架汇总】_开发平台_前端框架_手机端框架_测试工具_数据库中间件_监控工具_框架_汇总
  11. VS 2015 卸载所有组件工具
  12. 大数据中数据清理怎么做的_大数据清洗的方法 数据清洗的基本流程 | 星云联动...
  13. [非线性控制理论]8_三种鲁棒控制器的比较
  14. html的存储路径在哪,x浏览器书签保存在哪里?x浏览器书签本地存储路径位置分享...
  15. r语言中残差与回归值的残差图_独家 | 手把手教你用R语言做回归后的残差分析(附代码)-阿里云开发者社区...
  16. 2021年7月国产数据库排行榜:openGauss高歌猛进,GBase丢失第五
  17. 前后端分别实现集合根据中文拼音排序
  18. 家里装电线时,为啥说“走顶”比“走地”好
  19. java jtextarea.setfont_如何在JTextArea中更改文本颜色?
  20. 2020年全球半导体清洗设备发展现状、竞争格局及中国企业发展进展分析,行业集中度较高,国产化进程达到20%「图」

热门文章

  1. android 双导航组件,高级功能-导航组件-开发指南-Android 导航SDK | 高德地图API
  2. bat批处理---实现输入指定拷贝文件
  3. 测试圈相亲平台开发流程(5):首页开发
  4. python制作五角星
  5. 双旗科技亮相2010年上海国际数字标牌展
  6. 写一个算法交换单链表中p所指结点与其后继结点-21算法题
  7. Smarty Uninstaller v4.10.0 智能卸载工具,可以用来卸载Matlab 2019b
  8. 总有个短信发来一行乱码_为什么手机短信变成乱码
  9. 查出反向木马的反向连接域名
  10. 大数据处理 - Bitmap Bloom Filter