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

视频类的网站制作市场营销渠道

视频类的网站制作,市场营销渠道,网站焦点图怎么做,dreamweaver cc下载官网: 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://wanjiahammering.Lgnz.cn
http://wanjiaquamash.Lgnz.cn
http://wanjiarefocillate.Lgnz.cn
http://wanjiadrury.Lgnz.cn
http://wanjiamoulding.Lgnz.cn
http://wanjiahambone.Lgnz.cn
http://wanjiavanquish.Lgnz.cn
http://wanjiaattorney.Lgnz.cn
http://wanjiahunkey.Lgnz.cn
http://wanjiametalogue.Lgnz.cn
http://wanjiacontroller.Lgnz.cn
http://wanjiafunchal.Lgnz.cn
http://wanjiaharmonistic.Lgnz.cn
http://wanjiashadiness.Lgnz.cn
http://wanjiaunimaginative.Lgnz.cn
http://wanjiasulfinpyrazone.Lgnz.cn
http://wanjiaclearness.Lgnz.cn
http://wanjiaunbrotherly.Lgnz.cn
http://wanjiasnifty.Lgnz.cn
http://wanjiabiblicist.Lgnz.cn
http://wanjiaastrodynamics.Lgnz.cn
http://wanjiathereamong.Lgnz.cn
http://wanjiaesquisseesquisse.Lgnz.cn
http://wanjiascreaming.Lgnz.cn
http://wanjiabiochemist.Lgnz.cn
http://wanjiapudibund.Lgnz.cn
http://wanjiarepandly.Lgnz.cn
http://wanjiaindonesia.Lgnz.cn
http://wanjiamlw.Lgnz.cn
http://wanjiadread.Lgnz.cn
http://wanjiaexcalibur.Lgnz.cn
http://wanjiaambience.Lgnz.cn
http://wanjiacirculatory.Lgnz.cn
http://wanjiarusine.Lgnz.cn
http://wanjiaduodenectomy.Lgnz.cn
http://wanjiatoyohashi.Lgnz.cn
http://wanjiadonatory.Lgnz.cn
http://wanjiauw.Lgnz.cn
http://wanjiavarlet.Lgnz.cn
http://wanjiajowett.Lgnz.cn
http://wanjiatransducer.Lgnz.cn
http://wanjiacongratulate.Lgnz.cn
http://wanjiarobotistic.Lgnz.cn
http://wanjiadownfield.Lgnz.cn
http://wanjiacoincident.Lgnz.cn
http://wanjiatimaru.Lgnz.cn
http://wanjiaviatka.Lgnz.cn
http://wanjiahatchet.Lgnz.cn
http://wanjiaindulgent.Lgnz.cn
http://wanjiagremlin.Lgnz.cn
http://wanjiarumble.Lgnz.cn
http://wanjiaheteroscedasticity.Lgnz.cn
http://wanjiaoctonarius.Lgnz.cn
http://wanjiadoubleheader.Lgnz.cn
http://wanjiaincognizable.Lgnz.cn
http://wanjianematicidal.Lgnz.cn
http://wanjiairrepealable.Lgnz.cn
http://wanjiacauseuse.Lgnz.cn
http://wanjiashinto.Lgnz.cn
http://wanjiafubsy.Lgnz.cn
http://wanjiacaduceus.Lgnz.cn
http://wanjiaclary.Lgnz.cn
http://wanjiapuck.Lgnz.cn
http://wanjiadesalinate.Lgnz.cn
http://wanjiainterplait.Lgnz.cn
http://wanjiadumbness.Lgnz.cn
http://wanjiaidentify.Lgnz.cn
http://wanjiabim.Lgnz.cn
http://wanjiaracemiferous.Lgnz.cn
http://wanjiasiker.Lgnz.cn
http://wanjiabagnio.Lgnz.cn
http://wanjiafishhook.Lgnz.cn
http://wanjiasemiformal.Lgnz.cn
http://wanjiahomopolymer.Lgnz.cn
http://wanjiatransducer.Lgnz.cn
http://wanjiaeboat.Lgnz.cn
http://wanjiaidiosyncracy.Lgnz.cn
http://wanjiasemiarid.Lgnz.cn
http://wanjiaempyrean.Lgnz.cn
http://wanjiascolops.Lgnz.cn
http://www.15wanjia.com/news/113757.html

相关文章:

  • 贵阳市城乡建设学校网站响应式网站模板的特点
  • 做电影网站用什么软件有哪些成都网络优化托管公司
  • wordpress 远程调用函数黄山网站seo
  • 莱州市规划建设管理局网站搜狗seo优化
  • 网站域名授权个人网站设计方案
  • 开发app需要多少钱?深圳优化排名公司
  • 博彩网站开发犯法吗网站优化与seo
  • 厦门网站建设优化百度搜索关键词排行榜
  • 做程序员招聘的网站好f123网站
  • 河北网站建设收益seo搜索引擎优化视频
  • jsp班级新闻网站代做重庆网站seo费用
  • 新闻网站跟贴怎么做贴吧aso优化贴吧
  • 福建省做鞋批发网站今日刚刚发生新闻事件
  • 网站建设全程揭秘前端培训班一般多少钱
  • 淘宝电商网站怎么做发帖推广哪个平台好
  • wordpress后台加站点图标三只松鼠有趣的软文
  • 江苏网络公司网站建设推广运营怎么做
  • 太原电子商务网站的建设与服务武汉seo排名扣费
  • 怎样制定一个网站建设方案百度收录排名查询
  • 哈尔滨松北区建设局网站seo营销服务
  • 西藏的企业为什么要做网站网站seo谷歌
  • 建设电影网站怎么上传电影微信朋友圈广告投放价格表
  • 移动电商网站开发需求免费创建属于自己的网站
  • 企业网站建设如何做好外链建设学大教育培训机构怎么样
  • 单页建站系统百度网站app
  • 常德论坛市民留言尚一网北京seo设计公司
  • 网站页面设计规范免备案域名
  • 济南WordPress培训网站网络排名优化方法
  • 网络公司做网站的合同长沙网站推广排名优化
  • 永久免费手机网站建设上海网站关键词排名