minio分布式文件储存系统----文件上传

674 阅读1分钟
docker安装 minio
docker pull minio/minio

#创建并运行容器  初始化登录的账号密码 映射本地目录和docker目录的镜像 配置服务端口号
docker run  -p 9000:9000 -p 9001:9001  --name minio -d --restart=always 
-e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=admin123456" 
-v /home/data:/data  -v /home/config:/root/.minio  
minio/minio server /data --console-address ":9001"

#检查当前minio是否运行
docker ps
初始化minio客户端 并实现上传文件的功能
//获取文件上传地址   http://192.168.80.131:9000
@Value("${minio.endpointUrl}")
public String endpointUrl;

//连接客户端的账号  admin
@Value("${minio.accessKey}")
public String accessKsy;

//连接客户端的密码
@Value("${minio.secreKey}")
public String secreKey;

//文件要储存到那个地方 (储存桶) gmall
@Value("${minio.bucketName}")
public String bucketName;

@ApiOperation(value = "minio文件上传,文件上传成功返回文件上传的路径")
@PostMapping("fileUpload")
public Result fileUpload(MultipartFile file) throws Exception{
    String url = "";
    //获取客户端连接
    MinioClient minioClient = MinioClient.builder()
            .endpoint(endpointUrl)
            .credentials(accessKsy,secreKey)
            .build();
    //查看储存桶是否存在
    boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
    //如果已存存在
    if(isExist){
        System.out.println(bucketName+"-----储存桶已经存在,直接上传文件");
    }else {
        System.out.println("创建一个名为----"+bucketName+"---的储存桶");
    }
    //如果不存在 创建储存桶
    minioClient.makeBucket(MakeBucketArgs.builder()
            .bucket(bucketName)
            .build());
    //定义文件名称
    String fileName  = System.currentTimeMillis()+ UUID.randomUUID().toString();
    //将文件放在储存桶中
    minioClient.putObject(
            PutObjectArgs.builder().bucket(bucketName)
                    .object(fileName)
                    .stream(file.getInputStream(),file.getSize(),-1)
                    .contentType(file.getContentType())
                    .build());
    //获取上传后的文件路径  注意设置的储存桶默认是 私有的 请手动改成共有的,不然上传的图片访问不了
    url = endpointUrl+"/"+bucketName+"/"+fileName;

    return Result.ok(url);
其它的方式

| Minio中文文档