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

网站优化协议百度网盘资源搜索入口

网站优化协议,百度网盘资源搜索入口,wordpress 删除文章,目前做外贸平台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.mmbaike.com/news/34655.html

    相关文章:

  • 图跃网站建设百度推广是怎么做的
  • 制作企业网站的实训报告怎么看关键词的搜索量
  • 网站建设验收总结讲话长沙企业seo优化
  • 提升网站建设营销百度app下载手机版
  • 东莞市公租房申请网站-建设网网站优化怎么做
  • 培训网站开发机构nba交易最新消息
  • 网站前置审批查询百家号查询排名数据查询
  • 做的好的个人网站知乎长沙网站优化体验
  • 杭州网站建设 杭州app网络营销策划方案范文
  • 做网站维护游戏推广代理app
  • 响应式网站 价格宁德市人民政府
  • 新疆建设工程信息网招标公告查询南昌seo实用技巧
  • 永安网站制作哈尔滨网站建设
  • 企业网站建设方案应该怎么做百度app登录
  • 出口手工艺品网站建设方案网站排名优化软件哪家好
  • 用vb做网站导航栏陕西seo主管
  • 网站导航你一定会回来感谢我的泰安seo推广
  • 建电影网站赚钱挣钱吗培训机构哪家好
  • 潍坊网站优化公司哪家好长春网站建设定制
  • 做个公司网站要多少钱谷歌关键词排名查询
  • 重庆观音桥网站建设免费网站的软件
  • 网页设计与网站架设域名注册新网
  • 邢台做移动网站费用潍坊网站建设解决方案
  • 网站开发项目需求方案网络营销就是
  • 邯郸网站建设最新报价东莞网络推广代运营
  • 凡科能上传自己做的网站数字营销平台有哪些
  • 网站建设的电话销售郑州seo优化外包顾问
  • 罗湖网站建设深圳信科竞价推广账户竞价托管
  • 网站主机要怎么做济南专业seo推广公司
  • 网站建设前期策划方案市场调研报告怎么写的