//package com.ruoyi.file.service;
//
//import com.alibaba.nacos.common.utils.IoUtils;
//import com.ruoyi.common.core.web.domain.AjaxResult;
//import com.ruoyi.file.config.MinioConfig;
//import com.ruoyi.file.utils.FileUploadUtils;
//import io.minio.*;
//import io.minio.messages.DeleteError;
//import io.minio.messages.DeleteObject;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.io.InputStream;
//import java.util.List;
//
//import static com.ruoyi.common.core.web.domain.AjaxResult.error;
//import static com.ruoyi.common.core.web.domain.AjaxResult.success;
//
///**
// * Minio 文件存储
// *
// * @author ruoyi
// */
//@Service
//public class MinioSysFileServiceImpl implements ISysFileService
//{
//    @Autowired
//    private MinioConfig minioConfig;
//
//    @Autowired
//    private MinioClient client;
//
//    /**
//     * Minio文件上传接口
//     *
//     * @param file 上传的文件
//     * @return 访问地址
//     * @throws Exception
//     */
//    @Override
//    public String uploadFile(MultipartFile file) throws Exception
//    {
//        String fileName = FileUploadUtils.extractFilename(file);
//        InputStream inputStream = file.getInputStream();
//        PutObjectArgs args = PutObjectArgs.builder()
//                .bucket(minioConfig.getBucketName())
//                .object(fileName)
//                .stream(inputStream, file.getSize(), -1)
//                .contentType(file.getContentType())
//                .build();
//        client.putObject(args);
//        IoUtils.closeQuietly(inputStream);
////        return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName;
//        return fileName;
//    }
//
//    @Override
//    public InputStream downloadFile(String filename) {
//        try {
//            // 获取文件流
//            return client.getObject(GetObjectArgs.builder()
//                    .bucket(minioConfig.getBucketName()) // 替换为你实际的存储桶名称
//                    .object(filename)
//                    .build());
//        } catch (Exception e) {
//            e.printStackTrace();
//            return null;
//        }
//    }
//
//
//    @Override
//    public AjaxResult deleteFile(String filename)
//    {
//        try {
//            // 删除文件
//            client.removeObject(RemoveObjectArgs.builder()
//                    .bucket(minioConfig.getBucketName()) // 替换为你实际的存储桶名称
//                    .object(filename)
//                    .build());
//            return success();
//        } catch (Exception e) {
//            e.printStackTrace();
//            return error("文件删除失败：" + e.getMessage());
//        }
//    }
//
//
//    public AjaxResult deleteFiles(List<DeleteObject> deleteObjectList)
//    {
//        try {
//            // 批量删除文件
//            Iterable<Result<DeleteError>> results = client.removeObjects(RemoveObjectsArgs.builder()
//                    .bucket(minioConfig.getBucketName()) // 替换为你实际的存储桶名称
//                    .objects(deleteObjectList)
//                    .build());
//            // minio批量删除必须遍历结果，否则删除无效
//            for (Result<DeleteError> result : results) {
//                DeleteError error = result.get();
//                error("Error in deleting object " + error.objectName() + "; " + error.message());
//            }
//            return success();
//        } catch (Exception e) {
//            e.printStackTrace();
//            return error("文件删除失败：" + e.getMessage());
//        }
//    }
//}
