文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java 上传文件到MinIO服务器上

2023-10-02 12:16

关注

一、MinIO配置

主界面:

在这里插入图片描述

2.创建桶的文件路径

你可以设置任意想要配置的路径

在这里插入图片描述

 3.管理桶权限

在这里插入图片描述

这里Prefix写 * 是为了匹配所有请求路径
Access: readonly就可以通过url访问图片了。

二、SpringBoot Maven项目:

导入坐标: 

                            io.minio            minio            8.3.7                            com.squareup.okhttp3            okhttp            4.8.1        

三、配置application.yml文件

#minio配置minio:  oss:    endpoint: http://192.168.0.101:9000     accessKey: minioadmin    secretKey: minioadmin    bucketName: 桶名称 

四、编写读取配置类

import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;@Component@Data@ConfigurationProperties(prefix = "minio.oss")public class MinioProperties {    private String endpoint;    private String accessKey;    private String secretKey;    private String bucketName;}

五、创建工具类

import io.minio.BucketExistsArgs;import io.minio.MakeBucketArgs;import io.minio.MinioClient;import io.minio.PutObjectArgs;import io.minio.errors.*;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.web.multipart.MultipartFile;import java.io.IOException;import java.io.InputStream;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.UUID;@Componentpublic class MinioUtils {    @Autowired    private MinioProperties minioProperties;        public String upload(MultipartFile file) throws IOException, ServerException, InsufficientDataException, ErrorResponseException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {        //获取Minio的配置参数        String endpoint = minioProperties.getEndpoint();        String accessKey = minioProperties.getAccessKey();        String secretKey = minioProperties.getSecretKey();        String bucketName = minioProperties.getBucketName();        // 获取上传的文件的输入流        InputStream inputStream = file.getInputStream();        //将文件上传到Minio中        //1.获取minio对象        MinioClient minioClient =                MinioClient.builder()                        .endpoint(endpoint)                        .credentials(accessKey, secretKey)                        .build();        // 检查存储桶是否已经存在        boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());        if (isExist) {            System.out.println("Bucket already exists.");        } else {            // 创建一个名为 huike-crm 的存储桶,用于存储照片的zip文件。            minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());        }        // 避免文件覆盖 生成日期文件夹格式+文件 :年/月/日 + 文件名        String originalFilename = file.getOriginalFilename(); //获取原始文件名        //拼接生成新的UUID形式的文件名        String objectName = new SimpleDateFormat("yyyy/MM/dd/").format(new Date()) +                UUID.randomUUID().toString().replaceAll("-", "")                + originalFilename.substring(originalFilename.lastIndexOf("."));        //2.通过Minio对象将图片上传到minio桶中        // 使用putObject上传一个文件到存储桶中。        PutObjectArgs objectArgs = PutObjectArgs.builder().object(objectName)                .bucket(bucketName)                .contentType(file.getContentType())                .stream(file.getInputStream(), file.getSize(), -1).build();        minioClient.putObject(objectArgs);                //组装桶中文件的访问url        String resUrl = endpoint + "/" + bucketName + "/" + objectName;        return resUrl;    }}

六、controller调用

  //将文件存储到Minio中    @PostMapping("/upload")    public Result upload(MultipartFile image) throws Exception {        log.info("文件上传{}", image);        String url = minioUtils.upload(image); //将图片上传到Minio中        log.info("文件上传ok,{}", url);        return Result.success(url);    }

来源地址:https://blog.csdn.net/u013799020/article/details/130094549

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯