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

怎么样建设赌博网站百度有几个总部

怎么样建设赌博网站,百度有几个总部,舞钢做网站,网站的用户体验主要有那些类型一、首先配置MinIO 1、MinIO新建Bucket&#xff0c;访问控制台如图 创建访问密钥(就是账号和密码) 二、集成mino添加Minio客户端依赖 1.maven构建方式在pom.xml引入jar <dependency><groupId>io.minio</groupId><artifactId>minio</artifactI…

一、首先配置MinIO

1、MinIO新建Bucket,访问控制台如图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建访问密钥(就是账号和密码)
在这里插入图片描述
在这里插入图片描述

二、集成mino添加Minio客户端依赖

1.maven构建方式在pom.xml引入jar

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

2.配置Minio连接参数

Springoot配置文件yaml添加minio配置Minio连接参数:

    # minio 参数配置minio:#是否启用 默认值是trueenabled: true#是否https ,#如果是true,则用的是https而不是http,默认值是falsesecure: false#文件预览地址 由于我们的MinIO服务运行在9001端口上preview: http://127.0.0.1:9001#Minio服务器地址endpoint: http://127.0.0.1:9001# 默认存储桶bucket-name: #登录账号access-key: MKBgpZsb7WoLFEUTeR8y#登录密码secret-key: VpONfVhjGtPOUd26yPrm3ZskvuPLF4QGSTMtWRLE

(endpoint, access key, secret key,bucket name)主要是就是四个个参数,其他是因为业务需要加的参数
在这里插入图片描述

三、编写服务类,实现文件上传、下载等方法

1.创建配置类,初始化MinioClient Bean

import io.minio.MinioClient;
import lombok.Data;
import okhttp3.OkHttpClient;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;@ConfigurationProperties(prefix = "oss.minio")
@Configuration
@Data
public class MinioConfig {/*** 服务地址*/private String endpoint;/*** 文件预览地址*/private String preview;/*** 存储桶名称*/private String bucketName;/*** 用户名*/private String accessKey;/*** 密码*/private String secretKey;/*** 是否https ,是:true  不是:false*/private Boolean secure;/*** 初始化客户端,获取 MinioClient*/@Beanpublic MinioClient minioClient() throws NoSuchAlgorithmException, KeyManagementException {MinioClient.Builder minioClient = MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey);//是否https,如果是取消ssl认证if (secure) {final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {@Overridepublic void checkClientTrusted(X509Certificate[] x509Certificates, String s) {}@Overridepublic void checkServerTrusted(X509Certificate[] x509Certificates, String s) {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return new X509Certificate[]{};}}};X509TrustManager x509TrustManager = (X509TrustManager) trustAllCerts[0];final SSLContext sslContext = SSLContext.getInstance("SSL");sslContext.init(null, trustAllCerts, new SecureRandom());final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();OkHttpClient.Builder builder = new OkHttpClient.Builder();builder.sslSocketFactory(sslSocketFactory, x509TrustManager);builder.hostnameVerifier((s, sslSession) -> true);OkHttpClient okHttpClient = builder.build();minioClient.httpClient(okHttpClient).region("eu-west-1");}return minioClient.build();}}

2.文件上传接口

package priv.cl.oss.service;import org.springframework.web.multipart.MultipartFile;import java.io.InputStream;/*** @ClassName MinioFileStorageService* @Description MinioFileStorageService* @Author cl* @Date 2025/2/22 16:40*/
public interface MinIOFileStorageService {/*** 上传图片文件** @param prefix      文件前缀* @param filename    文件名* @param inputStream 文件流* @return 文件url*/String uploadImgFile(String prefix, String filename, InputStream inputStream);/*** 上传html文件** @param prefix      文件前缀* @param filename    文件名* @param inputStream 文件流* @return 文件url*/String uploadHtmlFile(String prefix, String filename, InputStream inputStream);/*** 上传文件不分类型** @param prefix        文件前缀* @param filename      文件名* @param multipartFile 文件* @return 文件url*/String uploadFileByMultipartFile(String prefix, String filename, MultipartFile multipartFile);/*** 上传本地文件** @param prefix     文件前缀* @param objectName 对象名称* @param fileName   本地文件路径*/String uploadFile(String prefix, String objectName, String fileName);/*** 下载文件url到本地指定路径** @param fileUrl 文件url* @param templatePath 指定路径文件夹* @return path 本地文件全路径*/String downloadFile(String fileUrl, String templatePath);/*** 下载文件** @param fileUrl 文件url* @return*/byte[] downloadFile(String fileUrl);/*** 删除文件** @param fileUrl 文件url*/void deleteFile(String fileUrl);
}

3.文件上传实现类

package priv.cl.oss.service;import io.minio.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import priv.cl.oss.config.MinioConfig;import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;/*** @ClassName MinIOFileStorageServiceImpl* @Description MinIOFileStorageServiceImpl* @Author cl* @Date 2025/2/22 16:45*/
@Slf4j
@Service
public class MinIOFileStorageServiceImpl implements MinIOFileStorageService {private String separator = "/";@Autowiredprivate MinioClient minioClient;@Autowiredprivate MinioConfig minioConfig;/*** @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 fileUrl* @return*/public String getFilePathByFileUrl(String fileUrl) {String filePath = fileUrl.replace(minioConfig.getEndpoint() + "/", "");int index = filePath.indexOf(separator);filePath = filePath.substring(index + 1);return filePath;}/*** 上传图片文件** @param prefix      文件前缀* @param filename    文件名* @param inputStream 文件流* @return url*/@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(minioConfig.getBucketName()).stream(inputStream, inputStream.available(), -1).build();minioClient.putObject(putObjectArgs);StringBuilder urlPath = new StringBuilder(minioConfig.getPreview());urlPath.append(separator + minioConfig.getBucketName());urlPath.append(separator);urlPath.append(filePath);return urlPath.toString();} catch (Exception e) {log.error("minio put file error.", e);throw new RuntimeException("上传文件失败");}}/*** 上传html文件** @param prefix      文件前缀* @param filename    文件名* @param inputStream 文件流* @return url*/@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(minioConfig.getBucketName()).stream(inputStream, inputStream.available(), -1).build();minioClient.putObject(putObjectArgs);StringBuilder urlPath = new StringBuilder(minioConfig.getEndpoint());urlPath.append(separator + minioConfig.getBucketName());urlPath.append(separator);urlPath.append(filePath);return urlPath.toString();} catch (Exception e) {log.error("minio put file error.", e);throw new RuntimeException("上传文件失败");}}/*** 上传文件不分类型** @param prefix        文件前缀* @param filename      文件名* @param multipartFile 文件流* @return url*/@Overridepublic String uploadFileByMultipartFile(String prefix, String filename, MultipartFile multipartFile) {String filePath = builderFilePath(prefix, filename);try {// 将MultipartFile转换为InputStreamInputStream inputStream = multipartFile.getInputStream();PutObjectArgs putObjectArgs = PutObjectArgs.builder().object(filePath).contentType(multipartFile.getContentType()).bucket(minioConfig.getBucketName()).stream(inputStream, multipartFile.getSize(), -1).build();minioClient.putObject(putObjectArgs);StringBuilder urlPath = new StringBuilder(minioConfig.getPreview());urlPath.append(separator + minioConfig.getBucketName());urlPath.append(separator);urlPath.append(filePath);return urlPath.toString();} catch (Exception e) {log.error("minio put file error.", e);throw new RuntimeException("上传文件失败");}}/*** 上传本地文件** @param prefix     文件前缀* @param objectName 文件名称* @param fileName   本地文件全路径*/@Overridepublic String uploadFile(String prefix, String objectName, String fileName) {String filePath = builderFilePath(prefix, objectName);try {UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder().bucket(minioConfig.getBucketName()).object(filePath).filename(fileName).build();minioClient.uploadObject(uploadObjectArgs);StringBuilder urlPath = new StringBuilder(minioConfig.getEndpoint());urlPath.append(separator + minioConfig.getBucketName());urlPath.append(separator);urlPath.append(filePath);return urlPath.toString();} catch (Exception e) {log.error("minio upload file error.", e);throw new RuntimeException("上传文件失败");}}/*** 下载文件url到本地指定文件夹** @param fileUrl      文件url* @param templatePath 指定路径文件夹* @return path 本地文件全路径*/@Overridepublic String downloadFile(String fileUrl, String templatePath) {String filePath = getFilePathByFileUrl(fileUrl);InputStream inputStream = null;String filename = filePath.substring(filePath.lastIndexOf(separator) + 1);try {inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(minioConfig.getBucketName()).object(filePath).build());FileOutputStream outputStream = null;outputStream = new FileOutputStream(templatePath + filename);byte[] buff = new byte[100];int rc = 0;while (true) {try {if (!((rc = inputStream.read(buff, 0, 100)) > 0)) break;} catch (IOException e) {log.error("文件read失败");e.printStackTrace();}outputStream.write(buff, 0, rc);}outputStream.close();inputStream.close();} catch (Exception e) {log.error("minio down file error.  pathUrl:{}", fileUrl);throw new RuntimeException("下载文件url到本地指定文件夹失败");}return templatePath + filename;}/*** 下载文件** @param fileUrl 文件全路径* @return 文件流*/@Overridepublic byte[] downloadFile(String fileUrl) {String filePath = getFilePathByFileUrl(fileUrl);InputStream inputStream = null;try {inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(minioConfig.getBucketName()).object(filePath).build());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) {log.error("文件read失败");e.printStackTrace();}byteArrayOutputStream.write(buff, 0, rc);}return byteArrayOutputStream.toByteArray();} catch (Exception e) {log.error("minio down file error.  pathUrl:{}", fileUrl);throw new RuntimeException("下载文件失败");}}/*** 删除文件** @param fileUrl 文件url*/@Overridepublic void deleteFile(String fileUrl) {String filePath = getFilePathByFileUrl(fileUrl);// 构建参数RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket(minioConfig.getBucketName()).object(filePath).build();try {minioClient.removeObject(removeObjectArgs);} catch (Exception e) {log.error("minio remove file error.  pathUrl:{}", fileUrl);throw new RuntimeException("删除文件失败");}}
}

4.Controller调用

@RestController
@RequestMapping("/minio")
public class MinioController {@Autowiredprivate MinIOFileStorageService minIOFileStorageServiceImpl;@GetMapping("/test")public String test(){return "Hello World";}@PostMapping("/fileupload")public String fileupload(@RequestParam MultipartFile file){// 检查multipartFile是否为空if (file == null || file.isEmpty()) {return "文件为空,无法处理。";}// 上传到MinIO服务器// 这里的"common"是前缀String url = minIOFileStorageServiceImpl.uploadFileByMultipartFile("common", file.getOriginalFilename(), file);return url;}}

四、测试集成

1.postman调用

在这里插入图片描述

2.通过minio客户端查看

在这里插入图片描述
遇到问题
1.url无法查看在这里插入图片描述
解决方案:
权限问题,设置成pulic,当然为了安全也可以生成访问外链
在这里插入图片描述

至此结束 ,有问题欢迎留言指出谢谢!


文章转载自:
http://orbivirus.nLkm.cn
http://strewn.nLkm.cn
http://absentee.nLkm.cn
http://protestation.nLkm.cn
http://crackbrained.nLkm.cn
http://dunner.nLkm.cn
http://fractionate.nLkm.cn
http://strove.nLkm.cn
http://descriptor.nLkm.cn
http://nematocystic.nLkm.cn
http://privileged.nLkm.cn
http://hydroformer.nLkm.cn
http://etypic.nLkm.cn
http://glassiness.nLkm.cn
http://kathmandu.nLkm.cn
http://bilander.nLkm.cn
http://miolithic.nLkm.cn
http://opiniative.nLkm.cn
http://naskhi.nLkm.cn
http://dalapon.nLkm.cn
http://oe.nLkm.cn
http://snuggery.nLkm.cn
http://coalyard.nLkm.cn
http://drawback.nLkm.cn
http://steamboat.nLkm.cn
http://nutation.nLkm.cn
http://sulfa.nLkm.cn
http://baconianism.nLkm.cn
http://parietes.nLkm.cn
http://tlac.nLkm.cn
http://bracteolate.nLkm.cn
http://adenoidal.nLkm.cn
http://marmora.nLkm.cn
http://paleobiology.nLkm.cn
http://ursuline.nLkm.cn
http://mongrelise.nLkm.cn
http://exophilic.nLkm.cn
http://signorini.nLkm.cn
http://reduce.nLkm.cn
http://chaperon.nLkm.cn
http://wildness.nLkm.cn
http://kink.nLkm.cn
http://geegee.nLkm.cn
http://loudmouth.nLkm.cn
http://multifid.nLkm.cn
http://forgiving.nLkm.cn
http://drifting.nLkm.cn
http://cossack.nLkm.cn
http://nectareous.nLkm.cn
http://flickery.nLkm.cn
http://plessimeter.nLkm.cn
http://okeydoke.nLkm.cn
http://spatted.nLkm.cn
http://hematolysis.nLkm.cn
http://idiotic.nLkm.cn
http://fladge.nLkm.cn
http://guitar.nLkm.cn
http://satirist.nLkm.cn
http://theelin.nLkm.cn
http://taeniafuge.nLkm.cn
http://gin.nLkm.cn
http://bromize.nLkm.cn
http://lorry.nLkm.cn
http://signore.nLkm.cn
http://beneficiate.nLkm.cn
http://letterweight.nLkm.cn
http://czarina.nLkm.cn
http://eye.nLkm.cn
http://constitutive.nLkm.cn
http://disquietude.nLkm.cn
http://won.nLkm.cn
http://thicknet.nLkm.cn
http://deciduous.nLkm.cn
http://planarian.nLkm.cn
http://polynuclear.nLkm.cn
http://furbearer.nLkm.cn
http://quercine.nLkm.cn
http://triptolemus.nLkm.cn
http://interest.nLkm.cn
http://intensively.nLkm.cn
http://readership.nLkm.cn
http://keratin.nLkm.cn
http://isosceles.nLkm.cn
http://taylor.nLkm.cn
http://newy.nLkm.cn
http://butterfingers.nLkm.cn
http://playa.nLkm.cn
http://cmh.nLkm.cn
http://hying.nLkm.cn
http://colles.nLkm.cn
http://stagnicolous.nLkm.cn
http://clomiphene.nLkm.cn
http://dandyism.nLkm.cn
http://hypognathous.nLkm.cn
http://vapidity.nLkm.cn
http://valetudinary.nLkm.cn
http://argumental.nLkm.cn
http://biologically.nLkm.cn
http://isoperimeter.nLkm.cn
http://caribbean.nLkm.cn
http://www.hrbkazy.com/news/70407.html

相关文章:

  • 广东卫视你会怎么做网站seo优化包括
  • 网站建设方案图重庆seo标准
  • 宁波网站建设多少钱外包公司到底值不值得去
  • 个体工商户可以做网站备案吗2345网址导航下载桌面
  • 桂林手机网站制作合肥网站优化软件
  • 哪些网站可以接点私活做的seo博客教程
  • 网站开发要用cms徐州百度快照优化
  • 网站和域名的关系seo是什么专业
  • 如何自己做时时彩网站google 谷歌
  • 哪些网站可以做淘宝客中国网站建设公司前十名
  • 昆明免费网站建设专业培训机构
  • 集团网站建一键优化免费下载
  • 食品网站应该怎么做站长网
  • 织梦dedecms微信微网站模板最近五天的新闻大事
  • 建网站_网站内容怎么做网站建设方案书模板
  • 网站推广关键词nba常规赛
  • 重庆峰宇园林建设有限公司网站如何做好网上销售
  • wordpress破解主题下载武汉关键词seo
  • seo网站优化技术成都专业的整站优化
  • 灯网一家专门做灯的网站合肥seo推广公司哪家好
  • 运城做网站的公司网推接单平台
  • 上海某家具网站建设方案产品品牌推广策划方案
  • 做的网站上更改内容改怎么上海网站制作开发
  • 广告推广的方式有哪些廊坊seo推广
  • 用jsp和mysql做网站国际新闻热点事件
  • 免费建个超市网站seo职位描述
  • 网页分为哪几种类型宁波seo网络推广产品服务
  • 网站新媒体建设b站在哪付费推广
  • 网站建设流程策划方案西安seo外包行者seo06
  • springboot做网站百度网盘官网