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

ps如何做网站导航图环保h5微网站

ps如何做网站导航图,环保h5微网站,重庆平台网站建设,江西网站定制公司1. minio介绍 Minio 是一个基于Go语言的对象存储服务。它实现了大部分亚马逊S3云存储服务接口#xff0c;可以看做是是S3的开源版本#xff0c;非常适合于存储大容量非结构化的数据#xff0c;例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等#xff0c;而一个对象…1. minio介绍 Minio 是一个基于Go语言的对象存储服务。它实现了大部分亚马逊S3云存储服务接口可以看做是是S3的开源版本非常适合于存储大容量非结构化的数据例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等而一个对象文件可以是任意大小从几kb到最大5T不等。区别于分布式存储系统minio的特色在于简单、轻量级对开发者友好认为存储应该是一个开发问题而不是一个运维问题。 2. minio下载地址 下载 3. liunx minio文件授权 chomd x minio 4. 编写启动minio shell文件 vi run.sh #!/bin/bash #web管理界面登录用户 export MINIO_ROOT_USERminio #web管理界面登录密码 export MINIO_ROOT_PASSWORDminio #生成共享链接时需要配置否则是本地地址127.0.0.1有地址的可以修改为自己地址 export MINIO_SERVER_URLhttp://IP:9002 # nohup启动服务 指定文件存放路径 /root/data 还有设置日志文件路径 /root/minio/log nohup ./minio server --address :9002 --console-address :9001 /root/data/minio /root/logs/minio.log 21 5. 赋权限给予shell文件run.sh文件 chmod ux run.sh . 6. 启动minio服务执行sh文件 bash run.sh 7. 查看日志我们在4的时候最后一条上有配置log地址 tail -f /root/logs/minio.log 8. 浏览器访问minio界面并且输入在第四步配置的账号密码 9. 接下来我们可以创建一个我们作为测试的文件桶 10. 当我们创建好桶之后我们可以前往查看是否存在 11. 点击桶进入手动测试上传文件 12. 上传文件之后我们可以选择某一个文件进行下载或者链接共享链接共享默认时间为7天 13. 当我们点击共享时会出现一个共享链接我们可以直接在浏览器内查看相对应的文件 14. springboot 对接minio加入POM文件 dependencygroupIdio.minio/groupIdartifactIdminio/artifactIdversion7.1.0/version/dependency 15. 配置application文件 生成请求账号密码 minio:endpoint: http://IP:9002accessKey: bjdZxvMDxAzYETgYn0aY 配置账号secretKey: uk7srkLHsYkwzvTYVzDBtwzlXz5fxsoMmNpbb3SN 配置密码bucketName: test 桶名称-默认 16.springboot 工具类 package com.project.google.util;/*** Description: TODO* Author xgp* Date 2023/8/7 8:05* PackageName:com.project.google.util* ClassName: MinioTemplate* Version 1.0*/import io.minio.*; import io.minio.messages.Bucket; import io.minio.messages.Item; import lombok.SneakyThrows; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.util.Assert; import org.springframework.web.multipart.MultipartFile;import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Optional; import java.util.stream.Collectors;/*** Minio 基础操作类** author: zhanghuaiyu* since 2021-01-22 16:27*/ Configuration public class MinioTemplate implements InitializingBean {private MinioClient minioClient;Value(${minio.endpoint})private String url;Value(${minio.accessKey})private String accessKey;Value(${minio.secretKey})private String secretKey;Overridepublic void afterPropertiesSet() {Assert.hasText(url, Minio url 为空);Assert.hasText(accessKey, Minio accessKey为空);Assert.hasText(secretKey, Minio secretKey为空);this.minioClient new MinioClient(url, accessKey, secretKey);}/*** 创建bucket* setBucketPolicy 设置权限才可以预览** param bucketName bucket名称*/SneakyThrowspublic Boolean createBucket(String bucketName) {if (!bucketExists(bucketName)) {minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());StringBuilder builder new StringBuilder();builder.append({\n);builder.append( \Statement\: [\n);builder.append( {\n);builder.append( \Action\: [\n);builder.append( \s3:GetBucketLocation\,\n);builder.append( \s3:ListBucket\\n);builder.append( ],\n);builder.append( \Effect\: \Allow\,\n);builder.append( \Principal\: \*\,\n);builder.append( \Resource\: \arn:aws:s3:::bucketname\\n);builder.append( },\n);builder.append( {\n);builder.append( \Action\: \s3:GetObject\,\n);builder.append( \Effect\: \Allow\,\n);builder.append( \Principal\: \*\,\n);builder.append( \Resource\: \arn:aws:s3:::my-bucketname/*.*\\n);builder.append( }\n);builder.append( ],\n);builder.append( \Version\: \2012-10-17\\n);builder.append(}\n);minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucketName).config(builder.toString().replace(bucketname, bucketName)).build());return true;} else {return false;}}/*** 获取全部bucket* p* https://docs.minio.io/cn/java-client-api-reference.html#listBuckets*/SneakyThrowspublic ListBucket getAllBuckets() {return minioClient.listBuckets();}/*** 根据bucketName获取信息** param bucketName bucket名称*/SneakyThrowspublic OptionalBucket getBucket(String bucketName) {return minioClient.listBuckets().stream().filter(b - b.name().equals(bucketName)).findFirst();}/*** 根据bucketName删除信息** param bucketName bucket名称*/SneakyThrowspublic void removeBucket(String bucketName) {minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucketName).build());}/*** 根据文件前置查询文件** param bucketName bucket名称* param prefix 前缀* param recursive 是否递归查询* return MinioItem 列表*/SneakyThrowspublic List getAllObjectsByPrefix(String bucketName, String prefix, boolean recursive) {ListItem list new ArrayList();IterableResultItem objectsIterator minioClient.listObjects(bucketName, prefix, recursive);if (objectsIterator ! null) {IteratorResultItem iterator objectsIterator.iterator();if (iterator ! null) {while (iterator.hasNext()) {ResultItem result iterator.next();Item item result.get();list.add(item);}}}return list;}/*** 获取文件外链** param bucketName bucket名称* param objectName 文件名称* param expires 过期时间 7* return url*/SneakyThrowspublic String getObjectUrl(String bucketName, String objectName, Integer expires) {return minioClient.presignedGetObject(bucketName, objectName, expires);}/*** 获取文件路径** param bucketName* param fileName* return*/SneakyThrowspublic String getObjectUrl(String bucketName, String fileName) {return minioClient.getObjectUrl(bucketName, fileName);}/*** 获取文件** param bucketName bucket名称* param objectName 文件名称* return 二进制流*/SneakyThrowspublic InputStream getObject(String bucketName, String objectName) {return minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(objectName).build());}/*** 获取文件** param bucketName* param objectName* return*/SneakyThrowspublic ObjectStat statObject(String bucketName, String objectName) {return minioClient.statObject(StatObjectArgs.builder().bucket(bucketName).object(objectName).build());}/*** 上传文件** param bucketName bucket名称* param objectName 文件名称* throws Exception https://docs.minio.io/cn/java-client-api-reference.html#putObject*/public String putObject(String bucketName, String objectName, MultipartFile file) throws Exception {if (!this.bucketExists(bucketName)) {this.createBucket(bucketName);}minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(objectName).stream(file.getInputStream(), file.getSize(), PutObjectArgs.MIN_MULTIPART_SIZE).contentType(file.getContentType()).build());return bucketName;}/*** 上传文件** param bucketName bucket名称* param objectName 文件名称* param stream 文件流* param size 大小* throws Exception https://docs.minio.io/cn/java-client-api-reference.html#putObject*/public void putObject(String bucketName, String objectName, InputStream stream, long size) throws Exception {minioClient.putObject(bucketName, objectName, stream, new PutObjectOptions(stream.available(), -1));}/*** 获取文件信息, 如果抛出异常则说明文件不存在** param bucketName bucket名称* param objectName 文件名称* throws Exception https://docs.minio.io/cn/java-client-api-reference.html#statObject*/public ObjectStat getObjectInfo(String bucketName, String objectName) throws Exception {return minioClient.statObject(StatObjectArgs.builder().bucket(bucketName).object(objectName).build());}/*** 删除文件** param bucketName bucket名称* param objectName 文件名称* throws Exception https://docs.minio.io/cn/java-client-api-reference.html#removeObject*/public void removeObject(String bucketName, String objectName) throws Exception {minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(objectName).build());}/*** 批量删除文件夹内所有文件** param bucketName bucket名称* param objectName 文件名称* throws Exception https://docs.minio.io/cn/java-client-api-reference.html#removeObject*/public void removeObjects(String bucketName, String objectName) throws Exception {ListItem list getAllObjectsByPrefix(bucketName, objectName, false);for (Item item : list) {removeObject(bucketName, item.objectName());}}SneakyThrowspublic boolean bucketExists(String bucketName) {return minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());}/*** 文件下载** param response* param bucket* param objectName* param outName* throws Exception*/public void download(HttpServletResponse response, String bucket, String objectName, String outName) throws Exception {ObjectStat stat this.statObject(bucket, objectName);response.setContentType(stat.contentType());response.setHeader(Content-Disposition, attachment;filename URLEncoder.encode(outName, UTF-8));response.setHeader(FileName, URLEncoder.encode(outName, UTF-8));InputStream in this.getObject(bucket, objectName);IOUtils.copy(in, response.getOutputStream());in.close();}/*** 合并分片文件到指定目录** param bucket* param fileName* param sources* return* throws Exception*/public ObjectWriteResponse composeObject(String bucket, String fileName, ListComposeSource sources) throws Exception {ObjectWriteResponse response minioClient.composeObject(ComposeObjectArgs.builder().bucket(bucket).object(fileName).sources(sources).build());return response;} } 17.请求测试controller方法 package com.project.google.controller;import afu.org.checkerframework.checker.oigj.qual.O; import com.project.google.util.MinioTemplate; import io.minio.messages.Bucket; import org.apache.commons.io.IOUtils; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile;import java.io.IOException; import java.io.InputStream; import java.util.*;/*** Description: TODO* Author xgp* Date 2023/8/7 8:35* PackageName:com.project.google.controller* ClassName: TbMinioController* Version 1.0*/ RestController public class TbMinioController {Autowiredprivate MinioTemplate minioTemplate;//创建新的桶GetMapping(createBucket)public Object createBucket(String bucketName){return minioTemplate.createBucket(bucketName);}//获取对应桶信息GetMapping(getList)public Object getList(String bucketName){Bucket bucket minioTemplate.getBucket(bucketName).get();MapString,Object map new HashMap();map.put(name,bucket.name());map.put(createDate,bucket.creationDate());return map;}//获取所有桶信息GetMapping(getAll)public Object getAll(){ListMap list new ArrayList();ListBucket buckets minioTemplate.getAllBuckets();buckets.stream().forEach(item - {MapString,Object map new HashMap();map.put(name,item.name());map.put(createDate,item.creationDate());list.add(map);});return list;}/**上传文件到对应桶里如果你想放入指定文件夹传入文件名前面带上文件夹名称及路径比如 test文件夹就- test/文件名依次类推*/PostMapping(uploadFile)public Object uploadFile(RequestParam(file) MultipartFile file) throws Exception {/**文件夹属性可加载文件前方*/return minioTemplate.putObject(test,uu/ file.getOriginalFilename(),file);}/**获取图片信息二进制数据转换为图片呈现*/GetMapping(value getFile, produces MediaType.IMAGE_JPEG_VALUE)public byte[] getFile(RequestParam(bucketName) String bucketName,RequestParam(objectName) String objectName) throws IOException {InputStream stream minioTemplate.getObject(bucketName, objectName);byte[] bytes IOUtils.toByteArray(stream);return bytes;}/**获取图片分享链接expires为过期时间可为小于等于7*/GetMapping(value getObjectUrl)public String getObjectUrl(RequestParam(bucketName) String bucketName,RequestParam(objectName) String objectName) throws IOException {return minioTemplate.getObjectUrl(bucketName, objectName, 1);}}18.接口测试 18.1 查询test bucket信息 18.2 获取所有bucket信息 18.3 上传文件我这边是通过apipox进行测试 18.4 查看图片信息 18.5 生成共享链接 到此整个对接过程就已经差不多了其他扩展功能如有需要可以咨询这边给出解答或者思路。
http://www.tj-hxxt.cn/news/131060.html

相关文章:

  • 建一个门户网站多少钱专业网站seo优化公司
  • 营销网站建设制作设计wordpress添加文字alt
  • 怎么样做公司网站wordpress post 405
  • 网站设计的大公司做网站钱
  • .net 网站 语言宝安做网站哪家好
  • 上海 科技网站建设学校校园网站建设实践选题背景
  • 人才网网站方案江西宣传片制作公司
  • 微网站的价格网络规划设计师考试大纲百度网盘
  • 好的h5网站模板深圳网站定制开发
  • 福州专业网站建设价格湖南网站优化服务
  • wp可以做商城网站吗深圳网站系统找哪里
  • 合肥市网站建设 小程序网站优化该怎么做
  • 嘉兴高端网站定制网站开发 售后服务协议
  • 导航网站系统网站建设论文答辩ppt
  • 花网站开发背景高端网站建设设计公司
  • 成都html5网站建设iis网站301重定向
  • 网页设计的五大原则成都seo技术
  • 公司网站开发策略和基本步骤怎么设计个人网站
  • 自动生成图片的网站如何获得网站
  • 许昌住房和城乡建设部网站pythom 网站开发规范
  • 网站收银系统建设设计专业知名企业网站
  • openwrt 网站开发wordpress文章自定义字段开发
  • 网站建设的网络公网页设计软件哪个好
  • 企业网站管理系统下载网站开发新技术
  • 做网站项目前怎么收集需求淘宝网站建设百度百科
  • 网站建设收费明细绍兴seo外包
  • 做网站要审核吗苏州网站建设设计公司
  • 做网站投资要多少钱网站正在建设中 htmll
  • 手机品牌网站柳市做网站
  • 上海住房城乡建设厅网站烟台建设局网站