当前位置: 首页 > news >正文

武汉网站建设哪家专业哈尔滨网络公司

武汉网站建设哪家专业,哈尔滨网络公司,不想让网站保存密码怎么做,baby做网站汽车1 MinIO核心概念 下面介绍MinIO中的几个核心概念,这些概念在所有的对象存储服务中也都是通用的。 对象(Object) 对象是实际的数据单元,例如我们上传的一个图片。 存储桶(Bucket) 存储桶是用于组织对象的命…

1 MinIO核心概念

下面介绍MinIO中的几个核心概念,这些概念在所有的对象存储服务中也都是通用的。

  • 对象(Object)

    对象是实际的数据单元,例如我们上传的一个图片。

  • 存储桶(Bucket)

    存储桶是用于组织对象的命名空间,类似于文件夹。每个存储桶可以包含多个对象。

  • 端点(Endpoint)

    端点是MinIO服务器的网络地址,用于访问存储桶和对象,例如http://192.168.10.101:9000

    注意:

    9000为MinIO的API的默认端口,前边配置的9001以为管理页面端口。

  • Access Key 和 Secret Key

    Access Key是用于标识和验证访问者身份的唯一标识符,相当于用户名。

    Secret Key是与Access Key关联的密码,用于验证访问者的身份。

2.上传图片到minio当中去

  1. 创建一个Maven项目

  2. 引入如下依赖

    <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.3</version>
    </dependency>
  3. 编写如下内容

    
    public class App {public static void main(String[] args) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {//1.创建 MinioClient对象MinioClient minioClient = MinioClient.builder().credentials("minioadmin", "minioadmin").endpoint("http://192.168.153.128:9000").build();//2.判断指定名称的桶是否存在boolean flag = minioClient.bucketExists(BucketExistsArgs.builder().bucket("b002").build());//3.如果不存在,则先创建桶并设置策略if (!flag) {//创建桶minioClient.makeBucket(MakeBucketArgs.builder().bucket("b002").build());//指定策略String policy = """{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"AWS": ["*"]},"Action": ["s3:GetObject"],"Resource": ["arn:aws:s3:::b002/*"]}]}""";minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket("b002").config(policy).build());}// 4.上传图片minioClient.uploadObject(UploadObjectArgs.builder().bucket("b002").object("公寓-健身房.jpg").filename("C:\\Users\\codercui\\Pictures\\7.images\\房间-厨房-2.jpg").build());}
    }
    

  4. 运行测试

    运行上述代码,然后查看MinIO管理页面,观察是否上传成功。

项目当中实现真正的图片上传

1. 图片上传流程

可以看出图片上传接口接收的是图片文件,返回的Minio对象的URL。

2. 图片上传接口开发

        配置Minio Client

1.引入Minio Maven依赖

  • common模块pom.xml文件增加如下内容:

    <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId>
    </dependency>

2.配置Minio相关参数

application.yml中配置Minio的endpointaccessKeysecretKeybucketName等参数

minio:endpoint: http://<hostname>:<port>access-key: <access-key>secret-key: <secret-key>bucket-name: <bucket-name>

注意:上述<hostname><port>等信息需根据实际情况进行修改。

3.创建一个minio的配置类

common模块中创建com.atguigu.lease.common.minio.MinioProperties,内容如下

package com.cuihub.lease.common.minio;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;@ConfigurationProperties(prefix = "minio")
@Data
public class MinioProperties {private String endpoint;private String accessKey;private String secretKey;private String bucketName;
}

 @ConfigurationProperties 需要的依赖添加到pom.xml当中去

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>

4.创建MinioConfiguration

common模块中创建com.atguigu.lease.common.minio.MinioConfiguration,内容如下

package com.cuihub.lease.common.minio;import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.SetBucketPolicyArgs;
import io.minio.errors.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;@Configuration
@EnableConfigurationProperties(MinioProperties.class)
public class MinioConfiguration {@Autowiredprivate MinioProperties minioProperties;@Beanpublic MinioClient minioClient() throws ServerException, InsufficientDataException,ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException,InvalidResponseException, XmlParserException, InternalException {MinioClient minioClient = MinioClient.builder().endpoint(minioProperties.getEndpoint()).credentials(minioProperties.getAccessKey(), minioProperties.getAccessKey()).build();boolean bucketExistsFlag = minioClient.bucketExists(BucketExistsArgs.builder().bucket(minioProperties.getBucketName()).build());if (!bucketExistsFlag){minioClient.makeBucket(MakeBucketArgs.builder().bucket(minioProperties.getBucketName()).build());String policy = """{"Statement" : [ {"Action" : "s3:GetObject","Effect" : "Allow","Principal" : "*","Resource" : "arn:aws:s3:::%s/*"} ],"Version" : "2012-10-17"}""".formatted(minioProperties.getBucketName());minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().config(policy).bucket(minioProperties.getBucketName()).build());}return minioClient;}
}

5. 创建一个控制类

package com.cuihub.lease.web.admin.controller.apartment;import com.cuihub.lease.common.result.Result;
import com.cuihub.lease.web.admin.service.FileService;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import io.minio.errors.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.io.StringReader;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;@Tag(name = "文件管理")
@RequestMapping("/admin/file")
@RestController
public class FileUploadController {@Autowiredprivate FileService fileService;@Operation(summary = "上传文件")@CrossOrigin@PostMapping("upload")public Result<String> upload(@RequestParam MultipartFile file) throws Exception {String url = fileService.upload(file);
//        System.out.println("url = " + url);return Result.ok(url);}}

6.创建FileService业务逻辑层

package com.cuihub.lease.web.admin.service;import org.springframework.web.multipart.MultipartFile;import java.io.IOException;public interface FileService {
String upload(MultipartFile multipartFile) throws Exception;
}

7.创建一个j接口实现类imp

package com.cuihub.lease.web.admin.service.impl;import com.cuihub.lease.common.minio.MinioProperties;
import com.cuihub.lease.web.admin.service.FileService;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;@Service
public class FileServiceImpl implements FileService {@Autowiredprivate MinioProperties minioProperties;@Autowiredprivate MinioClient minioClient;@Overridepublic String upload(MultipartFile file) throws Exception {//获取原始文件名String originalFilename = file.getOriginalFilename();//创建新的文件名SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");originalFilename= sdf.format(new Date())+ "/" +( UUID.randomUUID().toString().replaceAll("-", ""))+"_"+originalFilename;minioClient.putObject(PutObjectArgs.builder().stream(file.getInputStream(), file.getSize(), -1).contentType(file.getContentType()).bucket(minioProperties.getBucketName()).object(originalFilename).build());System.out.println(minioProperties.getEndpoint()+minioProperties.getBucketName()+"fashedkjhgft");String url = String.format("%s/%s",minioProperties.getEndpoint(),minioProperties.getBucketName())+"/"+originalFilename;return url;}
}

 这时候你就可以给前端返回一个图片的url地址啦

注意:

        1.添加配置文件指定桶名

        2.String.format 当中的占位符是%s,这里的s是小写,如果是大写%S那么返回的地址里面的字母全是大写的了

    http://www.hkea.cn/news/264659/

    相关文章:

  • flash网站优缺点厦门百度seo
  • 贵阳利于优化的网站百度搜索引擎推广步骤
  • 金色 网站 模板外链是什么
  • 网站有多难做如何做推广引流赚钱
  • 建设企业网站怎么样百度首页 百度
  • 热烈祝贺网站上线泉州seo代理计费
  • 网站平台建设意见长沙有实力seo优化
  • 深圳网站如何制作西安seo网站推广优化
  • 网站建设业务文案网站seo检测工具
  • 石家庄做外贸网站建设现在最好的营销方式
  • 兰州做网站公司有哪些html+css网页制作成品
  • 福州做网站的公司多少钱信息流优化
  • 群晖的网站开发百度客服怎么转人工
  • 制作网站项目流程无锡网站建设seo
  • 最好的开发网站建设价格如何搜索网页关键词
  • 做网站犯法了 程序员有责任吗网站建设合同
  • 建设部职称网站关键词优化营销
  • 做seo还要需要做网站吗百度热搜榜排行
  • 福建城市建设厅网站怎么推广一个网站
  • 机构网站建设需要交费吗关键词挖掘
  • 专业网站建设费用报价今日最新消息
  • 电商网站建设论文2022黄页全国各行业
  • 能源企业 网站建设网络营销的应用
  • 如何看网站是用什么语言做的关键词排名是由什么决定的
  • 政府网站建设招标书百度网站收录
  • 已经有了网站怎么做推广哈尔滨关键词优化报价
  • 网站建设与管理作业镇江推广公司
  • 域名申请好后 如何建设网站网站权重划分
  • 佛山百度网站快速优化网络营销推广工具
  • 建一个网站需要哪些人广州seo网站推广公司