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

黑糖不苦还做网站么网站的后台怎么做

黑糖不苦还做网站么,网站的后台怎么做,廊坊市建设局网站,学习网站模板MinIO从入门到飞翔 文章目录 MinIO从入门到飞翔0、前言1、分布式文件系统2、MinIO 介绍3、 MinIO安装#xff08;docker#xff09;4、基本概念5、通过代码上传文件到MinIO6、封装MinIO为starter7、在其他项目中集成封装好的模块 0、前言 对象存储是一种数据存储架构#x…MinIO从入门到飞翔 文章目录 MinIO从入门到飞翔0、前言1、分布式文件系统2、MinIO 介绍3、 MinIO安装docker4、基本概念5、通过代码上传文件到MinIO6、封装MinIO为starter7、在其他项目中集成封装好的模块 0、前言 对象存储是一种数据存储架构设计用于管理和处理大量非结构化数据。与传统的文件存储和块存储不同对象存储通过将数据分解为离散的、独立的单元或“对象”来存储每个对象包含数据本身、相关的元数据和一个唯一的标识符。 对象存储对比 存储方式优点缺点服务器磁盘开发便捷成本低扩展困难分布式文件系统容易实现扩容复杂度高第三方存储开发简单功能强大免维护收费 1、分布式文件系统 分布式文件系统Distributed File System, DFS是一种文件系统它使文件可以跨越多个服务器或存储设备存储和访问。DFS 通过网络将多个存储资源组合成一个统一的文件系统使用户和应用程序可以像访问本地文件一样透明地访问远程文件。 分布式文件系统的关键特性 透明性用户和应用程序可以像访问本地文件一样访问远程文件感受不到底层的复杂性。高可用性通过复制和冗余机制确保即使某些节点或硬件发生故障数据仍然可用。可扩展性能够处理随着数据量和用户数增加而增长的需求。容错性通过数据冗余和错误检测机制保证系统能继续运行即使发生部分硬件或网络故障。性能通过分布式架构能够有效地处理大量并发访问请求。 2、MinIO 介绍 MinIO 是一个高性能的分布式对象存储系统兼容 Amazon S3 云存储服务Min10基于Apache License v2.0开源协议的对象存储服务可以做为云存储的解决方案用来保存海量的图片视频文档。它专为大规模存储基础设施设计能够高效地存储海量非结构化数据如图片、视频、日志文件等。MinIO 提供了一组简单的 API用户可以方便地进行数据存储和管理。 官方文档 MinIO 的关键特性 兼容性 完全兼容 Amazon S3 API使用户可以使用现有的 S3 客户端和工具。 高性能 设计为高性能对象存储系统能够支持每秒数十GB的数据吞吐量。 可扩展性 支持横向扩展允许用户通过添加更多的存储节点来扩展存储容量和性能。 简易部署 提供简单的安装和配置过程可以在几分钟内启动和运行。 数据保护 通过纠删码Erasure Coding和位衰减Bit Rot保护机制确保数据完整性和持久性。 多租户支持 支持多用户和多租户环境提供隔离和权限管理。 Kubernetes 集成 提供原生的 Kubernetes Operator方便在 Kubernetes 集群中部署和管理 MinIO。 3、 MinIO安装docker 如果你有 Docker 环境可以通过以下命令快速拉取并运行 MinIO 容器 拉取镜像 docker pull minio/minio创建容器 docker run -p 9000:9000 --name minio -d --restartalways -e MINIO_ACCESS_KEYminio -e MINIO_SECRET_KEYminio123 -v /home/data:/data -v /home/config:/root/.minio minio/minio server /data访问minio系统: http://your_server_ip:9000 如http://192.168.200.130:9000 4、基本概念 bucket – 类比于文件系统的目录 Object – 类比文件系统的文件 Keys – 类比文件名 5、通过代码上传文件到MinIO 新建项目导入pom文件 dependenciesdependencygroupIdio.minio/groupIdartifactIdminio/artifactIdversion7.1.0/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactId/dependencydependencygroupIdcom.heima/groupIdartifactIdheima-file-starter/artifactIdversion1.0-SNAPSHOT/version/dependency/dependencies创建test测试文件 package com.heima.minio.test;import com.heima.file.service.FileStorageService; import io.minio.MinioClient; import io.minio.PutObjectArgs; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.io.FileInputStream; import java.io.FileNotFoundException;public class MinIOTest {public static void main(String[] args) {FileInputStream fileInputStream null;try {fileInputStream new FileInputStream(E:\\list.html);;//1.创建minio链接客户端MinioClient minioClient MinioClient.builder().credentials(minio, minio123).endpoint(http://192.168.200.130:9000).build();//2.上传PutObjectArgs putObjectArgs PutObjectArgs.builder().object(list.html)//文件名.contentType(text/html)//文件类型.bucket(leadnews)//桶名词 与minio创建的名词一致.stream(fileInputStream, fileInputStream.available(), -1) //文件流.build();minioClient.putObject(putObjectArgs);System.out.println(http://192.168.200.130:9000/leadnews/list.html);} catch (Exception ex) {ex.printStackTrace();}} }上传文件点击控制台连接即可访问list.html文件 若不能访问在minio控制系统中打开访问权限 6、封装MinIO为starter 在项目中封装 导入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-autoconfigure/artifactId /dependency dependencygroupIdio.minio/groupIdartifactIdminio/artifactIdversion7.1.0/version /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId /dependency添加minio配置文件 package com.heima.file.config;import com.heima.file.service.FileStorageService; import io.minio.MinioClient; import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Data Configuration EnableConfigurationProperties({MinIOConfigProperties.class}) //当引入FileStorageService接口时 ConditionalOnClass(FileStorageService.class) public class MinIOConfig {Autowiredprivate MinIOConfigProperties minIOConfigProperties;Beanpublic MinioClient buildMinioClient() {return MinioClient.builder().credentials(minIOConfigProperties.getAccessKey(), minIOConfigProperties.getSecretKey()).endpoint(minIOConfigProperties.getEndpoint()).build();} }在spring管理的bean中注入MinIOFileStorageService在spring.factories中 org.springframework.boot.autoconfigure.EnableAutoConfiguration\com.heima.file.service.impl.MinIOFileStorageServiceMinIOFileStorageService文件详情大概就实现了对于文件资源上传的操作 package com.heima.file.service.impl;import com.heima.file.config.MinIOConfig; import com.heima.file.config.MinIOConfigProperties; import com.heima.file.service.FileStorageService; import io.minio.GetObjectArgs; import io.minio.MinioClient; import io.minio.PutObjectArgs; import io.minio.RemoveObjectArgs; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Import; import org.springframework.util.StringUtils;import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Date;Slf4j EnableConfigurationProperties(MinIOConfigProperties.class) Import(MinIOConfig.class) public class MinIOFileStorageService implements FileStorageService {Autowiredprivate MinioClient minioClient;Autowiredprivate MinIOConfigProperties minIOConfigProperties;private final static String separator /;/*** param dirPath* param filename yyyy/mm/dd/file.jpg* return*/public String builderFilePath(String dirPath,String filename) {StringBuilder stringBuilder new StringBuilder(50);if(!StringUtils.isEmpty(dirPath)){stringBuilder.append(dirPath).append(separator);}SimpleDateFormat sdf new SimpleDateFormat(yyyy/MM/dd);String todayStr sdf.format(new Date());stringBuilder.append(todayStr).append(separator);stringBuilder.append(filename);return stringBuilder.toString();}/*** 上传图片文件* param prefix 文件前缀* param filename 文件名* param inputStream 文件流* return 文件全路径*/Overridepublic String uploadImgFile(String prefix, String filename,InputStream inputStream) {String filePath builderFilePath(prefix, filename);try {PutObjectArgs putObjectArgs PutObjectArgs.builder().object(filePath).contentType(image/jpg).bucket(minIOConfigProperties.getBucket()).stream(inputStream,inputStream.available(),-1).build();minioClient.putObject(putObjectArgs);StringBuilder urlPath new StringBuilder(minIOConfigProperties.getReadPath());urlPath.append(separatorminIOConfigProperties.getBucket());urlPath.append(separator);urlPath.append(filePath);return urlPath.toString();}catch (Exception ex){log.error(minio put file error.,ex);throw new RuntimeException(上传文件失败);}}/*** 上传html文件* param prefix 文件前缀* param filename 文件名* param inputStream 文件流* return 文件全路径*/Overridepublic String uploadHtmlFile(String prefix, String filename,InputStream inputStream) {String filePath builderFilePath(prefix, filename);try {PutObjectArgs putObjectArgs PutObjectArgs.builder().object(filePath).contentType(text/html).bucket(minIOConfigProperties.getBucket()).stream(inputStream,inputStream.available(),-1).build();minioClient.putObject(putObjectArgs);StringBuilder urlPath new StringBuilder(minIOConfigProperties.getReadPath());urlPath.append(separatorminIOConfigProperties.getBucket());urlPath.append(separator);urlPath.append(filePath);return urlPath.toString();}catch (Exception ex){log.error(minio put file error.,ex);ex.printStackTrace();throw new RuntimeException(上传文件失败);}}/*** 删除文件* param pathUrl 文件全路径*/Overridepublic void delete(String pathUrl) {String key pathUrl.replace(minIOConfigProperties.getEndpoint()/,);int index key.indexOf(separator);String bucket key.substring(0,index);String filePath key.substring(index1);// 删除ObjectsRemoveObjectArgs removeObjectArgs RemoveObjectArgs.builder().bucket(bucket).object(filePath).build();try {minioClient.removeObject(removeObjectArgs);} catch (Exception e) {log.error(minio remove file error. pathUrl:{},pathUrl);e.printStackTrace();}}/*** 下载文件* param pathUrl 文件全路径* return 文件流**/Overridepublic byte[] downLoadFile(String pathUrl) {String key pathUrl.replace(minIOConfigProperties.getEndpoint()/,);int index key.indexOf(separator);String bucket key.substring(0,index);String filePath key.substring(index1);InputStream inputStream null;try {inputStream minioClient.getObject(GetObjectArgs.builder().bucket(minIOConfigProperties.getBucket()).object(filePath).build());} catch (Exception e) {log.error(minio down file error. pathUrl:{},pathUrl);e.printStackTrace();}ByteArrayOutputStream byteArrayOutputStream new ByteArrayOutputStream();byte[] buff new byte[100];int rc 0;while (true) {try {if (!((rc inputStream.read(buff, 0, 100)) 0)) break;} catch (IOException e) {e.printStackTrace();}byteArrayOutputStream.write(buff, 0, rc);}return byteArrayOutputStream.toByteArray();} }具体模块下载 链接https://pan.baidu.com/s/17eWr0sLCOuF3bWoMravH_A?pwdm6ls 7、在其他项目中集成封装好的模块 在第5步创建的项目中进行测试使用 导入文件管理依赖自己封装好的第6步的模块 dependencygroupIdcom.heima/groupIdartifactIdheima-file-starter/artifactIdversion1.0-SNAPSHOT/version/dependency添加minio配置文件application.yml文件中 minio:accessKey: miniosecretKey: minio123bucket: leadnewsendpoint: http://192.168.200.130:9000readPath: http://192.168.200.130:9000在spring管理的bean中注入FileStorageService package com.heima.minio.test;import com.heima.file.service.FileStorageService; import io.minio.MinioClient; import io.minio.PutObjectArgs; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.io.FileInputStream; import java.io.FileNotFoundException;SpringBootTest( classes MinIOApplication.class) RunWith(SpringRunner.class) public class MinIOTest {public static void main(String[] args) {Autowiredprivate FileStorageService fileStorageService;Testpublic void testUpdateImgFile() {try {FileInputStream fileInputStream new FileInputStream(E:\\test.jpg);String filePath fileStorageService.uploadImgFile(, test.jpg, fileInputStream);System.out.println(filePath);} catch (FileNotFoundException e) {e.printStackTrace();}}}查看上传
http://www.tj-hxxt.cn/news/140307.html

相关文章:

  • 织梦 音乐网站网站页面禁止访问
  • 百度宣传做网站多少钱做网站卖大闸蟹
  • 甘肃省建设厅执业资格注册中心网站手机怎么查看网站代码实现的
  • 做网站建设的合同范本企业网站后台模板
  • 什么网站可以做外贸网页设计网站建设
  • 知名的建站公司免费网站外链推广
  • 做网站协议怎么签成都建工路桥建设有限公司网站
  • 重庆市工程建设招投标交易中心网站制作网站可用性监控
  • 杭州的服装网站建设mysql导入wordpress
  • 商务网站的分类网站建站的技术解决方案
  • 北京建设网站的公司兴田德润简介企业微信app下载安装官网电脑版
  • 做网站都有那些步骤网站群建设情况
  • 用搬瓦工做储存网站免费招商加盟
  • 新学校网站建设成果wordpress禁用主题更新
  • 做彩平的网站模板网传奇手游
  • 专业的网站开发团队需要哪些人黄金网站下载免费
  • 网站建设的基本知识资料网站怎么做
  • 无锡网站优化排名推广哪个网站做废旧好
  • 微信注册网站入口医院网站素材
  • 河北网站优化公司网上商城都有哪些平台
  • 开发网站最新注册公司流程及费用
  • 如何注册网站主办者秦皇岛市城乡建设局网站
  • 竞价托管多少钱西安seo站内优化
  • 天津百度整站优化服务请问如何做网站
  • 大良营销网站建设公司网站开发职位介绍
  • 英文网站建静宁门户网站
  • 网站开发便宜大图网
  • 工信部网站备案系统影视 网站建设 新媒体
  • .中国域名的网站高端软件定制开发
  • 容易做的html5的网站做网站运营需要具备什么能力