kongzy
2024-07-05 14821e28286d773ad5ff2c13510e39c5eb117daf
exam-common/src/main/java/com/gkhy/exam/common/utils/MinioUtils.java
@@ -6,6 +6,9 @@
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;
@@ -15,7 +18,9 @@
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
@@ -45,10 +50,16 @@
     * @param fileName 带后缀的文件名 检验日期yyyyMMdd加16位随机码
     * @param stream   文件流 要上传文件的流
     */
    public void fileUploader( String fileName, InputStream stream) throws Exception {
        PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(minioConfig.getBucketName()).object(fileName).stream(stream,-1,-1).contentType("application/octet-stream").build();
        // 使用putObject上传一个文件到文件分类
        minioClient.putObject(objectArgs);
    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;
    }
@@ -89,7 +100,7 @@
            String url = minioClient.getPresignedObjectUrl(build);
            return url;
        } catch (Exception e) {
            e.printStackTrace();
            log.error("预览文件失败:{}",e.getMessage());
        }
        return null;
    }
@@ -141,4 +152,43 @@
            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;
        }
    }
}