From 8458e64aab474c0fc2f49ae4ff22fb11ce5cf6e2 Mon Sep 17 00:00:00 2001 From: “djh” <“3298565835@qq.com”> Date: 星期一, 11 十一月 2024 16:55:28 +0800 Subject: [PATCH] 批次新增学员查询条件,新增题目导入接口 --- exam-common/src/main/java/com/gkhy/exam/common/utils/MinioUtils.java | 93 +++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 87 insertions(+), 6 deletions(-) diff --git a/exam-common/src/main/java/com/gkhy/exam/common/utils/MinioUtils.java b/exam-common/src/main/java/com/gkhy/exam/common/utils/MinioUtils.java index 83c85e2..b350ebc 100644 --- a/exam-common/src/main/java/com/gkhy/exam/common/utils/MinioUtils.java +++ b/exam-common/src/main/java/com/gkhy/exam/common/utils/MinioUtils.java @@ -6,6 +6,10 @@ import com.gkhy.exam.common.config.MinioConfig; import io.minio.*; import io.minio.http.Method; +import io.minio.messages.DeleteError; +import io.minio.messages.DeleteObject; +import io.minio.messages.Item; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.FastByteArrayOutputStream; @@ -13,9 +17,13 @@ import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.util.ArrayList; import java.util.Date; +import java.util.List; @Component +@Slf4j public class MinioUtils { @Autowired private MinioClient minioClient; @@ -27,15 +35,33 @@ * @return boolean */ public Boolean bucketExists(String bucketName) { - Boolean found; + Boolean found=false; try { found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); } catch (Exception e) { - e.printStackTrace(); - return false; + log.error("minio校验bucket失败:{}",e.getMessage()); } return found; } + + /** + * 文件上传 上传完成后请关闭文件流 + * + * @param fileName 带后缀的文件名 检验日期yyyyMMdd加16位随机码 + * @param stream 文件流 要上传文件的流 + */ + public String fileUploader( String fileName, InputStream stream) { + try { + PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(minioConfig.getBucketName()).object(fileName).stream(stream, stream.available(), -1).contentType("application/octet-stream").build(); + // 使用putObject上传一个文件到文件分类 + minioClient.putObject(objectArgs); + }catch (Exception e) { + log.error("minio上传文件失败:{}",e.getMessage()); + return null; + } + return fileName; + } + /** * 文件上传 @@ -43,7 +69,7 @@ * @param file 文件 * @return Boolean */ - public String upload(MultipartFile file) { + public String uploadFile(MultipartFile file) { String originalFilename = file.getOriginalFilename(); if (StringUtils.isBlank(originalFilename)){ throw new RuntimeException(); @@ -56,7 +82,7 @@ //文件名称相同会覆盖 minioClient.putObject(objectArgs); } catch (Exception e) { - e.printStackTrace(); + log.error("minio上传文件失败:{}",e.getMessage()); return null; } return objectName; @@ -74,7 +100,7 @@ String url = minioClient.getPresignedObjectUrl(build); return url; } catch (Exception e) { - e.printStackTrace(); + log.error("预览文件失败:{}",e.getMessage()); } return null; } @@ -110,4 +136,59 @@ e.printStackTrace(); } } + + /** + * 删除文件 + * @param fileName + * @return + */ + public boolean removeFile(String fileName){ + try { + RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket(minioConfig.getBucketName()) + .object(fileName).build(); + minioClient.removeObject(removeObjectArgs); + return true; + }catch (Exception e){ + return false; + } + } + + + /** + * 删除文件夹 + * @param folderName + * @return + */ + public boolean removeFolder(String folderName){ + try { + if(!folderName.endsWith("/")){ + folderName=folderName+"/"; + } + ListObjectsArgs listObjectsArgs=ListObjectsArgs.builder().bucket(minioConfig.getBucketName()).prefix(folderName).build(); + + Iterable<Result<Item>> results = minioClient.listObjects(listObjectsArgs); + List<DeleteObject> objectNames=new ArrayList<>(); + for(Result<Item> result:results){ + objectNames.add(new DeleteObject(result.get().objectName())); + } + if(!objectNames.isEmpty()) { + RemoveObjectsArgs removeObjectsArgs = RemoveObjectsArgs.builder().bucket(minioConfig.getBucketName()) + .objects(objectNames).build(); + Iterable<Result<DeleteError>> results1 = minioClient.removeObjects(removeObjectsArgs); + for (Result<DeleteError> result : results1) { + DeleteError error = result.get(); + log.error("Error in deleting object {},{}", error.objectName(), error.message()); + } + } + RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket(minioConfig.getBucketName()) + .object(folderName).build(); + minioClient.removeObject(removeObjectArgs); + return true; + }catch (Exception e){ + return false; + } + } + + + } -- Gitblit v1.9.2