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

江西中耀建设集团有限公司网站友情链接英语

江西中耀建设集团有限公司网站,友情链接英语,如何查询商标是否已经被注册,员工oa系统官网: MinIO 是一个基于 Go 实现的高性能、兼容 S3 协议的对象存储。它采用 GNU AGPL v3 开源协议,项目地址是 https://github.com/minio/minio 。 它适合存储海量的非结构化的数据,例如说图片、音频、视频等常见文件,备份数据、…

官网:
MinIO 是一个基于 Go 实现的高性能、兼容 S3 协议的对象存储。它采用 GNU AGPL v3 开源协议,项目地址是 https://github.com/minio/minio 。

它适合存储海量的非结构化的数据,例如说图片、音频、视频等常见文件,备份数据、容器、虚拟机镜像等等,小到 1 KB,大到 5 TB 都可以支持。

添加依赖

<properties><java.version>1.8</java.version><minio.version>8.4.3</minio.version>
</properties><dependencies><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>${minio.version}</version></dependency>
</dependencies>

Minio 配置类

import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class MinioConfig {@Value("${minio.url}")private String url;@Value("${minio.access-key}")private String accessKey;@Value("${minio.secret-key}")private String secretKey;@Beanpublic MinioClient minioClient() {return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();}
}

application.yml 配置文件

minio:url: http://127.0.0.1:9000accessKey: 45wsHpkAIWfhghSs11XsecretKey: D9fghfg6sahgufghfgdOYrwqHqocfgh2njhfgh

MinioTemplate.java 封装方法

封装常用的上传(多文件上传、单文件上传)、获取链接、删除、下载方法,方便使用。

import com.ufan.mall.model.FileVo;
import io.minio.*;
import io.minio.http.Method;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;/*** @ClassName:MinioTemplate.java* @Description:MinioTemplate* @Author:tanyp* @Date:2023/07/27 15:49**/
@Slf4j
@Component
public class MinioTemplate {@Autowiredprivate MinioClient client;/*** @MonthName:upload* @Description: 上传文件* @Author:tanyp* @Date:2023/07/27 15:52* @Param: [file, bucketName]* @return:void**/public FileVo upload(MultipartFile file, String bucketName) {try {createBucket(bucketName);String oldName = file.getOriginalFilename();String fileName = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + UuidUtil.getRandomPwd(15) + oldName.substring(oldName.lastIndexOf("."));client.putObject(PutObjectArgs.builder().bucket(bucketName).object(fileName).stream(file.getInputStream(), file.getSize(), 0).contentType(file.getContentType()).build());String url = this.getObjUrl(bucketName, fileName);return FileVo.builder().oldFileName(oldName).newFileName(fileName).fileUrl(url.substring(0, url.indexOf("?"))).build();} catch (Exception e) {log.error("上传文件出错:{}", e);return null;}}/*** @MonthName:uploads* @Description: 上传多个文件* @Author:tanyp* @Date:2023/07/27 15:52* @Param: [file, bucketName]* @return:void**/public List<FileVo> uploads(List<MultipartFile> files, String bucketName) {try {List<FileVo> list = new ArrayList<>();createBucket(bucketName);for (MultipartFile file : files) {String oldName = file.getOriginalFilename();String fileName = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + UuidUtil.getRandomPwd(15) + oldName.substring(oldName.lastIndexOf("."));client.putObject(PutObjectArgs.builder().bucket(bucketName).object(fileName).stream(file.getInputStream(), file.getSize(), 0).contentType(file.getContentType()).build());String url = this.getObjUrl(bucketName, fileName);list.add(FileVo.builder().oldFileName(oldName).newFileName(fileName).fileUrl(url.substring(0, url.indexOf("?"))).build());}return list;} catch (Exception e) {log.error("上传文件出错:{}", e);return null;}}/*** @MonthName:download* @Description: 下载文件* @Author:tanyp* @Date:2023/07/27 15:54* @Param: [bucketName, fileName]* @return:void**/public void download(String bucketName, String fileName) throws Exception {client.downloadObject(DownloadObjectArgs.builder().bucket(bucketName).filename(fileName).build());}/*** @MonthName:getObjUrl* @Description: 获取文件链接* @Author:tanyp* @Date:2023/07/27 15:55* @Param: [bucketName, fileName]* @return:java.lang.String**/public String getObjUrl(String bucketName, String fileName) throws Exception {return client.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().bucket(bucketName).object(fileName).method(Method.GET).expiry(30, TimeUnit.SECONDS).build());}/*** @MonthName:delete* @Description: 删除文件* @Author:tanyp* @Date:2023/5/26 15:56* @Param: [bucketName, fileName]* @return:void**/public void delete(String bucketName, String fileName) throws Exception {client.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(fileName).build());}@SneakyThrowspublic void createBucket(String bucketName) {if (!client.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {client.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());String sb = "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Effect\": \"Allow\",\"Principal\": {\"AWS\": [\"*\"]},\"Action\": [\"s3:GetBucketLocation\"],\"Resource\": [\"arn:aws:s3:::" + bucketName + "\"]},{\"Effect\": \"Allow\",\"Principal\": {\"AWS\": [\"*\"]},\"Action\": [\"s3:ListBucket\"],\"Resource\": [\"arn:aws:s3:::" + bucketName + "\"],\"Condition\": {\"StringEquals\": {\"s3:prefix\": [\"*\"]}}},{\"Effect\": \"Allow\",\"Principal\": {\"AWS\": [\"*\"]},\"Action\": [\"s3:GetObject\"],\"Resource\": [\"arn:aws:s3:::" + bucketName + "/**\"]}]}";client.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucketName).config(sb).build());}}}

FileVo.java 实体类

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class FileVo {/*** 原文件名*/private String oldFileName;/*** 新文件名*/private String newFileName;/*** 文件路径*/private String fileUrl;}

动态创建 Bucket

如何设置桶的权限?

在MinIO中,可以通过设置桶策略来控制桶的访问权限。桶策略是一个JSON格式的文本文件,用于指定哪些实体(用户、组或IP地址)可以执行哪些操作(读、写、列举等)。

MinIO桶策略的基本结构如下所示:

{"Version": "2012-10-17","Statement": [{"Action": ["action1", "action2", ...],"Effect": "Allow|Deny","Principal": {"AWS": ["arn:aws:iam::account-id:user/user-name"]},"Resource": ["arn:aws:s3:::bucket-name/object-prefix", ...]},...]
}
http://www.15wanjia.com/news/47995.html

相关文章:

  • 什么软件 做短视频网站好推广引流吸引人的文案
  • 建设网站深圳罗湖电子商务网站建设方案
  • 企业网站建设的流程5g网络优化
  • 柳州哪家公司做网站好全面网络推广营销策划
  • 公司比较好seo外链发布工具
  • flash网站建设seo排名优化软件有用吗
  • gps建站教程百度竞价推广登录
  • 搭建网站 阿里云推广引流话术
  • 如何做网站的统计成都关键词seo推广平台
  • 自己做的网站 能收索么b站推广链接
  • 网站整体配色方案企业网站设计制作
  • 网站建设 服务器 预算报价清单百度推广和优化哪个好
  • 网站内链规划网站维护中
  • wordpress 首页显示摘要深圳英文站seo
  • 做网站的成本是什么百度指数查询官网入口登录
  • 小型玩具企业网站建设初期阶段任务今日国际新闻头条新闻
  • 电子商务网站建设 市场分析天津百度推广代理商
  • 做网站 赚广告费seo职业培训学校
  • 吉安网站设计app推广联盟平台
  • 网站建设题目以及答案百度云网盘资源搜索引擎
  • 免费个人网站建设报价河南今日重大新闻
  • 怎样建设网站佛山百度推广公司
  • 做外贸需要自己建网站吗举例网络营销的例子
  • 陕西网站建设价格螺蛳粉营销策划方案
  • 基于jsp企业网站开发设计答辩ppt广西壮族自治区人民医院
  • 什么行业必须做网站大数据营销平台那么多
  • 建设网站找哪里百度问一问官网
  • 怎么查看wordpress主题东莞网站seo推广
  • 网站怎么做留言板百度手机助手官网
  • jquery 网站模板seo网站介绍