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

免费建站网站seo东营网站建设方案策划

免费建站网站seo,东营网站建设方案策划,实事新闻热点,石家庄网站推广方案类似于FastDFS/HDFS的一个文件存储服务#xff01; SpringBoot整合MinIO实现分布式文件服务#xff01; #MinIO简介#xff1f; Minio 是个基于 Golang 编写的开源对象存储套件#xff0c;基于Apache License v2.0开源协议#xff0c;虽然轻量#xff0c;却拥有着不错的… 类似于FastDFS/HDFS的一个文件存储服务 SpringBoot整合MinIO实现分布式文件服务 #MinIO简介 Minio 是个基于 Golang 编写的开源对象存储套件基于Apache License v2.0开源协议虽然轻量却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用例如 NodeJS、Redis、MySQL等。 #1. 应用场景 MinIO 的应用场景除了可以作为私有云的对象存储服务来使用也可以作为云对象存储的网关层无缝对接 Amazon S3 或者 MicroSoft Azure #2. 特点 高性能作为一款高性能存储在标准硬件条件下其读写速率分别可以达到 55Gb/s 和 35Gb/s。并且MinIO 支持一个对象文件可以是任意大小从几kb到最大5T不等。 可扩展不同MinIO集群可以组成联邦并形成一个全局的命名空间并且支持跨越多个数据中心。 云原生容器化、基于K8S的编排、多租户支持。 Amazon S3兼容使用 Amazon S3 v2 / v4 API。可以使用Minio SDKMinio ClientAWS SDK 和 AWS CLI 访问Minio服务器。 SDK支持 GO SDKGitHub - minio/minio-go: MinIO Go client SDK for S3 compatible object storage(opens new window) JavaSDKGitHub - minio/minio-java: MinIO Client SDK for Java(opens new window) PythonSDKGitHub - minio/minio-py: MinIO Client SDK for Python(opens new window) 图形化界面有操作页面 支持纠删码MinIO使用纠删码、Checksum来防止硬件错误和静默数据污染。在最高冗余度配置下即使丢失1/2的磁盘也能恢复数据。 功能很强大~ 源码地址GitHub - minio/minio: High Performance Object Storage for AI(opens new window) 中文文档地址MinIO | 高性能, Kubernetes原生对象存储(opens new window) #安装MinIO 安装非常简单这里使用docker安装步骤如下 #1. 获取镜像 执行命令如下 docker pull minio/minio #2. 启动镜像 执行命令如下 mkdir -p /opt/mnt/data /opt/mnt/conf docker run -p 9000:9000 -p 9099:9099 --name minio -d --restartalways -e MINIO_ACCESS_KEYadmin -e MINIO_SECRET_KEYadmin123456789 -v /opt/mnt/data:/data -v /opt/mnt/config:/root/.minio minio/minio server --console-address :9000 --address :9099 /data 命令解释如下 -p9000是图形界面的端口9001是API的端口在使用SDK连接需要用到 MINIO_ACCESS_KEY指定图形界面的用户名 MINIO_SECRET_KEY指定图形界面的密码 按照上述两个步骤启动成功即可。 注意ACCESS_KEY 长度最少3个字符SECRET_KEY 长度最少8个字符 #3. 图形界面操作 安装成功后直接访问地址http:/ip:9000/login如下 输入用户名和密码登录成功后如下 菜单很多这里就不再详细介绍了笔者这里直接在Buckets菜单中创建一个桶为test如下图 并且设置这个桶的隐私规则为public如下 MinIO到此已经安装设置成功了 #SpringBoot整合MinIO上传文件 要实现SDK上传需要检查存放图片data文件是否为最高权限不然上传接口会报错 S3 API Requests must be made to API port 原因权限不够不能创建对应文件路径 解决方案 检查docker映射的data目录 /opt/mnt/data权限如果权限不够 chmod 777 /opt/mnt/data 虽然MinIO在图形界面提供了手动上传的操作但是也可以通过SDK的方式去上传下面介绍一下Spring Boot 整合MinIO上传文件。 #1. 获取accessKey和secretKey 这里的accessKey和secretKey并不是图形界面登录名和密码获取很简单直接在图形界面中操作如下图 #2. 添加依赖 添加MinIO的依赖如下 dependencygroupIdio.minio/groupIdartifactIdminio/artifactIdversion8.5.3/version /dependencydependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp/artifactIdversion4.10.0/version /dependency #3. 添加配置 minio:# minio地址endpoint: http://localhost:9000# 账户username: minioadmin# 密码password: minioadmindefaultBucketName: test #4. 创建配置类用于生成MinioClient /*** Description minio配置类*/ Configuration public class MinioConfig {Value(${minio.endpoint})private String endpoint;Value(${minio.username})private String username;Value(${minio.password})private String password;Value(${minio.defaultBucketName})private String defaultBucketName;Beanpublic MinioClient minioClient(){return MinioClient.builder().credentials(username, password).endpoint(endpoint).build();}} #5.创建一个返回实体类方便规范返回信息 Data public class MinioReturn {/*** 文件地址*/private String path;/*** 原始文件名*/private String inputName;/*** 最终文件名*/private String outPutName;}#6.创建MinioTemplate类用来书写minio工具类 Component public class MinioTemplate {Autowiredprivate MinioClient minioClient;private static final String SLASH /;Value(${minio.defaultBucketName})private String defaultBucketName;Value(${minio.endpoint})private String endpoint;/*** 创建桶** param bucketName* throws Exception*/public void makeBucket(String bucketName) throws Exception {BucketExistsArgs args BucketExistsArgs.builder().bucket(bucketName).build();if (!minioClient.bucketExists(args)) {minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());}}/*** 上传文件** param file* return* throws Exception*/public MinioReturn putFile(MultipartFile file) throws Exception {return putFile(file, file.getOriginalFilename(), defaultBucketName);}public MinioReturn putFile(MultipartFile file, String fileName, String bucketName) throws Exception {if (bucketName null || bucketName.length() 0) {bucketName defaultBucketName;}makeBucket(bucketName);minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(fileName).stream(file.getInputStream(), file.getSize(), -1).contentType(file.getContentType()).build());return new MinioReturn(fileLink(bucketName, fileName), file.getOriginalFilename(), fileName);}/*** 删除文件** param bucketName* param fileName* throws Exception*/public void removeFile(String bucketName, String fileName) throws Exception {minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName null || bucketName.length() 0 ? defaultBucketName : bucketName).object(fileName).build());}SneakyThrowsprivate String fileLink(String bucketName, String fileName) {return endpoint.concat(SLASH).concat(bucketName).concat(SLASH).concat(fileName);}private String getFileName(String fileName) {return getFileName(null, fileName);}private String getFileName(String prefix, String fileName) {String fileNamePre fileName;String fileType ;int index fileName.lastIndexOf(.);if (index 0) {fileNamePre fileName.substring(0, index);fileType fileName.substring(index);}String name UUID.randomUUID().toString().replace(-, );if (!org.springframework.util.StringUtils.isEmpty(fileNamePre)) {name fileNamePre - name fileType;}if (!StringUtils.isEmpty(prefix)) {name prefix - name;}return name;}} #7.书写控制类用于测试 RestController RequestMapping(minio) AllArgsConstructor public class MinioController {private final MinioTemplate minioTemplate;PostMapping(/upload)ResponseBodypublic MinioReturn upload(MultipartFile file) throws Exception {return minioTemplate.putFile(file);}PostMapping(/remove)ResponseBodypublic String remove(String fileName, String bucketName) throws Exception{minioTemplate.removeFile(bucketName, fileName);return success;}} #8. 测试 我们查看minio中自动创建了桶并且文件也上传成功了 同样再测试一下删除接口 查看minio中删除成功 如果想通过配置域名映射minio服务器访问指定图片 桶权限设置为public 上述代码创建的桶默认是private的如果想要通过客户端代码调整桶权限的话可以通过minioClient.setBucketPolicy方法设置完后可以通过返回的地址进行访问如下所示如果想要通过外网访问给对应的内网地址端口做个外网映射即可 开启权限public会有个安全问题那就是当你访问桶路径时会发现会把所有桶下的文件列出来这样只要再拼接上文件名就能访问所有文件了 要解决这个问题只需要将权限设置为custom然后将s3:ListBucket取消即可 再次访问会发现权限禁止而加上文件名后是可以正常查看的 当然也可以使用AmazonS3 云存储服务接口 相关文档Amazon S3对象执行操作 - AWS SDK for Java1.x
http://wiki.neutronadmin.com/news/290001/

相关文章:

  • 三亚做网站哪家效果好wordpress+上一篇+下一篇
  • 网站建设商谈泰州快速建站模板
  • 网站开发专员绩效考核运维需要掌握哪些知识
  • 医疗软件网站建设做网站 郑州公司
  • 白酒pc网站建设方案网页设计代码html模版
  • 网站策划书模板大全做seo是要先有网站吗
  • 网站建设实验结论蓝色系 网站
  • 网上做网站的柳州网站建设11
  • 一个网站多个域名备案做哪个网站的推广最好
  • 谁可以做网站搭建本地视频网站
  • 栾川有做网站的吗知识问答网站开发
  • php网站 缓存门户网站建设教程
  • 学科基地网站建设教务管理系统可行性研究报告
  • 网站开发怎么谈建设一个视频网站需要什么条件
  • 门户网站信息发布管理办法电商网站建设考试
  • 政务门户网站建设的意义万界随机购物系统
  • 做销售用什么网站整站seo哪家服务好
  • 网站建设用哪种语言莱芜搬家公司电话
  • 大众服务器网站福建南平网站建设
  • 广州企业网站定制网站开通宣传怎么写
  • 河北平台网站建设哪家有百度百科优化
  • 网站做产品的审核手机优化助手怎么关闭
  • 门户网站开发软件用凡科做网站要钱吗
  • 服务器除了做网站还能做什么wordpress热门吗
  • 怎么用自己的主机做网站服务器吗做vip电影网站
  • 做网站好的书德语网站域名
  • 做网站怎么买断源码北京个人网站建设多少钱
  • 阿迪达斯网站建设定位做网站运营需要具备哪些能力
  • 网站建设 字体版权怎么做网站排名会更好
  • 旅游网站设计参考文献海口 网站 制作