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

如何做收费网站怎么免费给网站做收录

如何做收费网站,怎么免费给网站做收录,太原百度快速优化,wap歌词基本介绍 什么是 MinIO MinIO 是一款基于 Go 语言的高性能、可扩展、云原生支持、操作简单、开源的分布式对象存储产品。基于 Apache License v2.0 开源协议,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应…

基本介绍

什么是 MinIO
        MinIO 是一款基于 Go 语言的高性能、可扩展、云原生支持、操作简单、开源的分布式对象存储产品。基于 Apache License v2.0 开源协议,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用,例如 NodeJS、Redis、MySQL 等。

官网:www.minio.org.cn/

MinIO 特点

  • 高性能:作为高性能对象存储,在标准硬件条件下它能达到55GB/s的读、35GG/s的写速率
  • 可扩容:不同MinIO集群可以组成联邦,并形成一个全局的命名空间,并跨越多个数据中心
  • 云原生:容器化、基于K8S的编排、多租户支持
  • Amazon S3兼容:Minio使用Amazon S3 v2 / v4 API。可以使用Minio SDK,Minio Client,AWS SDK和AWS CLI访问Minio服务器。
  • 可对接后端存储: 除了Minio自己的文件系统,还支持DAS、 JBODs、NAS、Google云存储和Azure Blob存储。
  • SDK支持: 基于Minio轻量的特点,它得到类似Java、Python或Go等语言的sdk支持
  • Lambda计算: Minio服务器通过其兼容AWS SNS / SQS的事件通知服务触发Lambda功能。支持的目标是消息队列,如Kafka,NATS,AMQP,MQTT,Webhooks以及Elasticsearch,Redis,Postgres和MySQL等数据库。
  • 有操作页面
  • 功能简单: 这一设计原则让MinIO不容易出错、更快启动
  • 支持纠删码:MinIO使用纠删码、Checksum来防止硬件错误和静默数据污染。在最高冗余度配置下,即使丢失1/2的磁盘也能恢复数据

docker 安装 minio

下载镜像(最新版本)
docker pull minio/minio
查看已经下载的镜像
docker images

创建并启动minIO容器:
这里的 \ 指的是命令还没有输入完,还需要继续输入命令,先不要执行的意思。
这里的9090端口指的是minio的客户端端口。虽然设置9090,但是我们在访问9000的时候,他也会自动跳到9090。
9000端口是minio的服务端端口,我们程序在连接minio的时候,就是通过这个端口来连接的。
-v就是docker run当中的挂载,这里的/usr/local/mydata/minio/data:/data意思就是将容器的/data目录和宿主机的/mydata/minio/data目录做映射,这样我们想要查看容器的文件的时候,就不需要看容器当中的文件了。
注意在执行命令的时候,他是会自动在宿主机当中创建目录的。我们不需要手动创建。
minio所上传的文件默认都是存储在容器的data目录下的!
假如删除容器了宿主机当中挂载的目录是不会删除的。假如没有使用-v挂载目录,那他在宿主机的存储位置的文件会直接删除的。
宿主机的挂载目录一定是根目录,如果是相对路径会有问题。还有容器当中的目录也是必须是绝对路径(根路径就是带/的)。
所谓的挂载其实就是将容器目录和宿主机目录进行绑定了,操作宿主机目录,容器目录也会变化,操作容器目录,宿主机目录也会变化。这样做的目的 可以间接理解为就是数据持久化,防止容器误删,导致数据丢失的情况。
MINIO_ACCESS_KEY:账号 MINIO_SECRET_KEY:密码 (正常账号应该不低于3位,密码不低于8位,不然容器会启动不成功)
–console-address 指定客户端端口
-d --restart=always 代表重启linux的时候容器自动启动
–name minio 容器名称

 docker run -p 9000:9000 -p 9090:9090  --name minio  -d --restart=always  -e "MINIO_ACCESS_KEY=minioadmin"  -e "MINIO_SECRET_KEY=minioadmin"  -v /usr/local/mydata/minio/data:/data  minio/minio server  /data --console-address ":9090" -address ":9000"

springboot集成minio

一、配置yml文件

#yml配置文件增加如下配置minio:endpoint: http://ip:9000fileUploadUrl: http://ip:9000accessKey: minioadmin (用户名)secretKey: minioadmin (密码)bucketName: file (文件组:桶名)

二、引入pom(8与7的方法不适用,以下使用8.0.3)

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

三、系统加载minio配置

@Data
@Configuration
@ConfigurationProperties(prefix = "minio")
public class MinioConfig {private String endpoint;private String accessKey;private String secretKey;private String bucketName;@Beanpublic MinioClient minioClient()  {MinioClient minioClient = MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();return minioClient;}}

四、minio工具类(上传文件,返回访问链接)

package org;import cn.hutool.core.io.FastByteArrayOutputStream;
import com.alibaba.fastjson.JSONObject;
import io.minio.*;
import io.minio.http.Method;
import io.minio.messages.Bucket;
import io.minio.messages.DeleteError;
import io.minio.messages.DeleteObject;
import io.minio.messages.Item;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;/*** 功能描述 文件服务器工具类** @author: * @date: */
@Component
public class MinioUtil {@Resourceprivate MinioClient minioClient;/*** 查看存储bucket是否存在* @return boolean*/public Boolean bucketExists(String bucketName) {Boolean found;try {found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());} catch (Exception e) {//e.printStackTrace();return false;}return found;}/*** 创建存储bucket* @return Boolean*/public Boolean makeBucket(String bucketName) {try {minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());} catch (Exception e) {e.printStackTrace();return false;}return true;}/*** 删除存储bucket* @return Boolean*/public Boolean removeBucket(String bucketName) {try {minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucketName).build());} catch (Exception e) {e.printStackTrace();return false;}return true;}/*** 获取全部bucket*/public List<Bucket> getAllBuckets() {try {return minioClient.listBuckets();} catch (Exception e) {e.printStackTrace();}return null;}/*** 文件上传* @param file 文件* @return Boolean*/public Boolean upload(String bucketName, String fileName, MultipartFile file, InputStream inputStream) {try {PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(bucketName).object(fileName).stream(inputStream,file.getSize(),-1).contentType(file.getContentType()).build();//文件名称相同会覆盖minioClient.putObject(objectArgs);} catch (Exception e) {e.printStackTrace();return false;}return true;}/*** 预览图片* @param fileName* @return*/public String preview(String fileName,String bucketName){// 查看文件地址GetPresignedObjectUrlArgs build = new GetPresignedObjectUrlArgs().builder().bucket(bucketName).object(fileName).method(Method.GET).build();try {String url = minioClient.getPresignedObjectUrl(build);return url;} catch (Exception e) {e.printStackTrace();}return null;}/*** 文件下载* @param fileName 文件名称* @param res response* @return Boolean*/public void download(String fileName,String bucketName, HttpServletResponse res) {GetObjectArgs objectArgs = GetObjectArgs.builder().bucket(bucketName).object(fileName).build();try (GetObjectResponse response = minioClient.getObject(objectArgs)){byte[] buf = new byte[1024];int len;try (FastByteArrayOutputStream os = new FastByteArrayOutputStream()){while ((len=response.read(buf))!=-1){os.write(buf,0,len);}os.flush();byte[] bytes = os.toByteArray();res.setCharacterEncoding("utf-8");//设置强制下载不打开//res.setContentType("application/force-download");res.addHeader("Content-Disposition", "attachment;fileName=" + fileName);try (ServletOutputStream stream = res.getOutputStream()){stream.write(bytes);stream.flush();}}} catch (Exception e) {e.printStackTrace();}}/*** 查看文件对象* @return 存储bucket内文件对象信息*/public List<Item> listObjects(String bucketName) {Iterable<Result<Item>> results = minioClient.listObjects(ListObjectsArgs.builder().bucket(bucketName).build());List<Item> items = new ArrayList<>();try {for (Result<Item> result : results) {items.add(result.get());}} catch (Exception e) {e.printStackTrace();return null;}return items;}/*** 删除* @param fileName* @return* @throws Exception*/public boolean remove(String fileName,String bucketName){try {minioClient.removeObject( RemoveObjectArgs.builder().bucket(bucketName).object(fileName).build());}catch (Exception e){return false;}return true;}/*** 批量删除文件对象(没测试)* @param objects 对象名称集合*/public Iterable<Result<DeleteError>> removeObjects(List<String> objects, String bucketName) {List<DeleteObject> dos = objects.stream().map(e -> new DeleteObject(e)).collect(Collectors.toList());Iterable<Result<DeleteError>> results = minioClient.removeObjects(RemoveObjectsArgs.builder().bucket(bucketName).objects(dos).build());return results;}//上传文件,返回路径public Object upload(HashMap<String, Object> paramMap) {MultipartFile file=(MultipartFile)paramMap.get("file");if (file.isEmpty() || file.getSize() == 0) {return "文件为空";}try {if (!this.bucketExists("file")) {this.makeBucket("file");}InputStream inputStream = file.getInputStream();String fileName = file.getOriginalFilename();String newName = UUID.randomUUID().toString().replaceAll("-", "")+ fileName.substring(fileName.lastIndexOf("."));this.upload("file", newName,file, inputStream);inputStream.close();String fileUrl = this.preview(newName,"file");String fileUrlNew=fileUrl.substring(0, fileUrl.indexOf("?"));JSONObject jsonObject=new JSONObject();jsonObject.put("url",fileUrlNew);return jsonObject.toJSONString();} catch (Exception e) {e.printStackTrace();return "上传失败";}}
}

项目中实践

http://www.yayakq.cn/news/316738/

相关文章:

  • 罗湖附近公司做网站建设免费网址注册
  • 男女生做羞羞网站wordpress自动添加动态内容
  • 深圳高端网站建设公司排名网站维护后期费用
  • 廊坊大城网站建设软件开发文档国标
  • 北京东宏建设网站软件实施流程八个阶段
  • 网站开发当前城市定位功能视频网站开发费用
  • 网站开发与电子商务免费邮箱163登录入口
  • 公司网站注册要多少钱免费推广软件平台seo博客
  • 沧州青县网站建设wordpress5.1更新
  • 深圳建设网站哪里好网页游戏传奇游戏
  • 平面设计师网站都有哪些广州地铁集团有限公司
  • 杭州网站建设公司服务东莞市公司网站建设服务机构
  • 网站建设捌金手指专业7郑州新感觉会所网站哪里做的
  • 权重高的博客网站做家居的网站
  • 望城警务督察网站建设已有网站做百度推广
  • 网页设计与制作模版台州百度推广优化
  • 黄冈网站建设流程嘉兴seo外包公司
  • ppt网站有哪些福田祥菱v1单排
  • 影响网站排名的因素女生wordpress网站适合
  • 深圳企业网站建设公司福州做网站的公司电话
  • 旅行社网站建设需求分析北京建设工程信息网交易平台
  • 平湖公司网站建设wordpress widgets_init
  • 开发企业网站设计惠州网站建设哪里找
  • 巩义网站建设案件数据广州好的网站设计公司
  • 中职学校网站建设情况总结电子商务网站采用的开发技术
  • 网站建设版面分几页合适工作总结加强部门网站建设
  • dede做手机网站新网站怎么做seo优化
  • 建筑公司网站平台ui毕业设计代做网站
  • 用eclipse做网站模板网站的布局结构三种
  • 咸阳做网站电话怎么做盗版网站