西安网站建设和推广,用jsp做的网站首页,苏州哪家公司做网站,装潢设计工作室文章目录 一、minio下载安装#xff08;Windows#xff09;二、案例需求分析三、后端接口开发 一、minio下载安装#xff08;Windows#xff09;
1. 下载minio服务端和客户端 minio下载地址 2. 手动搭建目录
/minio/binmc.exeminio.exe/data/logs手动创建minio应用程序目… 文章目录 一、minio下载安装Windows二、案例需求分析三、后端接口开发 一、minio下载安装Windows
1. 下载minio服务端和客户端 minio下载地址 2. 手动搭建目录
/minio/binmc.exeminio.exe/data/logs手动创建minio应用程序目录如E:\minio\bin手动创建minio数据目录如E:\minio\data手动创建minio日志目录如E:\minio\logs然后将下载的mc.exe文件和minio.exe文件放入E:\minio\bin目录下
3. 启动
在bin目录下打开cmd 到bin目录下后在地址栏输入cmd然后回车 设置用户名
setx MINIO_ROOT_USER minioadmin设置用户密码
setx MINIO_ROOT_PASSWORD minioadmin启动minio服务
E:\minio\bin\minio.exe server E:\minio\data --console-address :9001 --address :9000 E:\minio\logs\minio.log4. 访问minio控制台 在浏览器输入服务器Ip 9001端口号打开登录页面然后使用前面步骤中设置的用户名和密码登录控制台 建立一个新的bucket 修改桶的访问权限为public 二、案例需求分析 例如在添加用户和修改用户的时候此时可以在表单页面点击号然后选择要上传的用户图像。 选择完毕以后那么此时就会请求后端上传文件接口将图片的二进制数据传递到后端 后端需要将数据图片存储起来然后给前端返回图片的访问地址然后前端需要将图片的访问地址设置给sysUser用户数据模型 当用户点击提交按钮的时候那么此时就会将表单进行提交后端将数据保存起来即可
三、后端接口开发
基本目录结构
/java
----/controller
--------FileUploadController.java
----/properties
--------MinioProperties.java
----/service
--------/impl
------------FileUploadServiceImpl.java
--------FileUploadService.java
----ManagerApplication.java
/resources
----application-dev.yml在application-dev.yml中添加minio相关配置 # 自定义配置
project:minio:endpointUrl: http://127.0.0.1:9000accessKey: minioadminsecureKey: minioadminbucketName: b2c-e-commerce新建MinioProperties.javaminio所需参数实体类 Data
ConfigurationProperties(prefix project.minio)
public class MinioProperties {private String endpointUrl;private String accessKey;private String secureKey;private String bucketName;
}修改启动类ManagerApplication添加EnableConfigurationProperties注解激活配置属性绑定功能 EnableConfigurationProperties(value { MinioProperties.class})service层接口及实现类
基本思路 在fileUpload方法中首先根据minioProperties创建一个MinioClient实例用于与MinIO服务器交互。 检查指定的桶bucket是否存在。如果不存在则通过makeBucket方法创建一个新的桶。 生成存储对象的名称结合当前日期格式为yyyyMMdd和一个随机UUID作为前缀再加上原始文件名确保文件名的唯一性。 使用PutObjectArgs构建上传对象的参数包括桶名、文件输入流从MultipartFile获取、文件大小和对象名称即文件路径。 调用minioClient.putObject执行文件上传操作。 最后返回文件在MinIO服务器上的访问URL以便用户可以访问上传的文件。
FileUploadService.java
public interface FileUploadService {String fileUpload(MultipartFile multipartFile);
}FileUploadServiceImpl.java
Service
public class FileUploadServiceImpl implements FileUploadService {Autowiredprivate MinioProperties minioProperties ;Overridepublic String fileUpload(MultipartFile multipartFile) {try {// 创建一个Minio的客户端对象MinioClient minioClient MinioClient.builder().endpoint(minioProperties.getEndpointUrl()).credentials(minioProperties.getAccessKey(), minioProperties.getSecureKey()).build();// 判断桶是否存在boolean found minioClient.bucketExists(BucketExistsArgs.builder().bucket(minioProperties.getBucketName()).build());if (!found) { // 如果不存在那么此时就创建一个新的桶minioClient.makeBucket(MakeBucketArgs.builder().bucket(minioProperties.getBucketName()).build());} else { // 如果存在打印信息System.out.println(Bucket b2c-e-commerce already exists.);}// 设置存储对象名称String dateDir DateUtil.format(new Date(), yyyyMMdd);String uuid UUID.randomUUID().toString().replace(-, );//20230801/443e1e772bef482c95be28704bec58a901.jpgString fileName dateDir/uuidmultipartFile.getOriginalFilename();System.out.println(fileName);PutObjectArgs putObjectArgs PutObjectArgs.builder().bucket(minioProperties.getBucketName()).stream(multipartFile.getInputStream(), multipartFile.getSize(), -1).object(fileName).build();minioClient.putObject(putObjectArgs) ;return minioProperties.getEndpointUrl() / minioProperties.getBucketName() / fileName ;} catch (Exception e) {throw new RuntimeException(e);}}
}controller层
RestController
RequestMapping(/admin/system)
public class FileUploadController {Autowiredprivate FileUploadService fileUploadService ;PostMapping(value /fileUpload)public ResultString fileUploadService(RequestParam(value file) MultipartFile multipartFile) {String fileUrl fileUploadService.fileUpload(multipartFile) ;return Result.build(fileUrl , ResultCodeEnum.SUCCESS) ;}}