美文网首页
2023-12-30 用户头像上传 后端

2023-12-30 用户头像上传 后端

作者: 大也 | 来源:发表于2024-01-15 11:35 被阅读0次

注意点1. 能不能做成模版类
2.minio 安装及简单使用。官网文档的查阅
3.MultipartFile. 知识补充

  1. minio 准备
    2023-12-30 minio 安装及简单使用
    2.依赖

    <dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.5.2</version>
    </dependency>
    3.编写配置类 官网上参考
    https://min.io/docs/minio/linux/developers/java/minio-java.html
    4.MultipartFile. 知识补充
    https://blog.csdn.net/weixin_44874132/article/details/125471482
    5。后端代码
    1.controller

@RestController
@RequestMapping("/admin/system")
public class FileUploadController {

@Autowired
private FileUploadService fileUploadService;

/**
 //<input type="file" name="file" /> java html 中的基础知识 name="file"前端用的框架固定是 file 所以别改
 * */
@PostMapping("/fileUpload")
public Result fileUpload(@RequestParam("file") MultipartFile multipartFile){
    String url = fileUploadService.fileUpload( multipartFile);
    return Result.build(url, ResultCodeEnum.SUCCESS);
}

}
2.server
String fileUpload(MultipartFile multipartFile);
2.1 serverImpl
@Service
public class FileUploadServiceImpl implements FileUploadService {

@Autowired
private MinioProperties minioProperties ;

@Override
public String fileUpload(MultipartFile multipartFile) {


    /**
     1。// 创建一个Minio的客户端对象 MinioClient minioClient
     2。// 判断桶是否存在 if (!found)
                // 如果不存在,那么此时就创建一个新的桶
                // 如果存在打印信息
     3。// 设置存储对象名称             //20230801/443e1e772bef482c95be28704bec58a901.jpg

     * */

    try {
        //1
        MinioClient minioClient = MinioClient.builder()
                .endpoint(minioProperties.getEndpointUrl())
                .credentials(minioProperties.getAccessKey(), minioProperties.getSecreKey())
                .build();
        //2
        boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(minioProperties.getBucketName()).build());
        if (!found) {
            minioClient.makeBucket(MakeBucketArgs.builder().bucket(minioProperties.getBucketName()).build());
        } else {
            System.out.println("Bucket 'spzx-bucket' already exists.");
        }

        //3
        String dateDir = DateUtil.format(new Date(), "yyyyMMdd");
        String uuid = UUID.randomUUID().toString().replace("-", "");
        String fileName = dateDir+"/"+uuid+multipartFile.getOriginalFilename();
        System.out.println(fileName);

        PutObjectArgs putObjectArgs = PutObjectArgs.builder()
                .bucket(minioProperties.getBucketName())
                .stream(multipartFile.getInputStream(), multipartFile.getSize(), -1)
                .object(fileName)
                .build();
        minioClient.putObject(putObjectArgs) ;

        return minioProperties.getEndpointUrl() + "/" + minioProperties.getBucketName() + "/" + fileName ;

    } catch (Exception e) {
        throw new RuntimeException(e);
    }


    /**  官网代码

     try {

     // 创建一个Minio的客户端对象
     MinioClient minioClient = MinioClient.builder()
     .endpoint("http://127.0.0.1:9000")
     .credentials("minioadmin", "minioadmin")
     .build();

     boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("spzx-bucket").build());

     // 如果不存在,那么此时就创建一个新的桶
     if (!found) {
     minioClient.makeBucket(MakeBucketArgs.builder().bucket("spzx-bucket").build());
     } else {  // 如果存在打印信息
     System.out.println("Bucket 'spzx-bucket' already exists.");
     }

     FileInputStream fis = new FileInputStream("D://01.jpg") ;
     PutObjectArgs putObjectArgs = PutObjectArgs.builder()
     .bucket("spzx-bucket")
     .stream(fis, fis.available(), -1)
     .object("01.jpg")
     .build();
     minioClient.putObject(putObjectArgs) ;

     // 构建fileUrl
     String fileUrl = "http://127.0.0.1:9000/spzx-bucket/01.jpg" ;
     System.out.println(fileUrl);
     return fileUrl;
     } catch (Exception e) {
     throw new RuntimeException(e);
     }
     * */
}

}
3.yaml 配置
spzx:
minio:
endpointUrl: http://127.0.0.1:9000
accessKey: minioadmin
secreKey: minioadmin
bucketName: spzx-bucket

相关文章

网友评论

      本文标题:2023-12-30 用户头像上传 后端

      本文链接:https://www.haomeiwen.com/subject/stxsndtx.html