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

宁波网站建设企业网站制作怎么推广淘宝店铺

宁波网站建设企业网站制作,怎么推广淘宝店铺,松江专业做网站,内部网站建设公司精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 以下是一份详细的Spring Boot整合MinIO的教程,包含基础配置和常用文件操作示例: Spring Boot整合MinIO对象存储教程 一、MinIO简介 …

精心整理了最新的面试资料和简历模板,有需要的可以自行获取

点击前往百度网盘获取
点击前往夸克网盘获取

以下是一份详细的Spring Boot整合MinIO的教程,包含基础配置和常用文件操作示例:


Spring Boot整合MinIO对象存储教程

一、MinIO简介

MinIO是一款高性能、云原生的分布式对象存储系统,兼容Amazon S3 API。适用于存储图片、文档、视频等非结构化数据。

二、环境准备

  1. 安装MinIO服务(推荐Docker方式)
docker run -d \-p 9000:9000 \-p 9001:9001 \--name minio \-v /mnt/data:/data \-e "MINIO_ROOT_USER=admin" \-e "MINIO_ROOT_PASSWORD=admin123" \quay.io/minio/minio server /data --console-address ":9001"
  1. 访问控制台:http://localhost:9001 使用admin/admin123登录

三、创建Spring Boot项目

  1. 使用Spring Initializr创建项目
  • 依赖选择:Spring Web、Lombok
  1. 添加MinIO依赖(pom.xml)
<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.7</version>
</dependency>

四、配置MinIO参数

application.yml:

minio:endpoint: http://localhost:9000access-key: adminsecret-key: admin123bucket-name: mybucketsecure: false  # 是否使用https

配置类MinioConfig.java:

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

五、实现MinIO工具类

MinioUtils.java:

@Slf4j
@Component
@RequiredArgsConstructor
public class MinioUtils {private final MinioClient minioClient;private final MinioConfig minioConfig;/*** 初始化存储桶*/public void createBucket() throws Exception {boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(minioConfig.getBucketName()).build());if (!found) {minioClient.makeBucket(MakeBucketArgs.builder().bucket(minioConfig.getBucketName()).build());}}/*** 文件上传*/public String uploadFile(MultipartFile file, String objectName) throws Exception {if (file.isEmpty()) {throw new RuntimeException("上传文件不能为空");}createBucket(); // 确保存储桶存在minioClient.putObject(PutObjectArgs.builder().bucket(minioConfig.getBucketName()).object(objectName).stream(file.getInputStream(), file.getSize(), -1).contentType(file.getContentType()).build());return minioConfig.getEndpoint() + "/" + minioConfig.getBucketName() + "/" + objectName;}/*** 文件下载*/public InputStream downloadFile(String objectName) throws Exception {return minioClient.getObject(GetObjectArgs.builder().bucket(minioConfig.getBucketName()).object(objectName).build());}/*** 删除文件*/public void deleteFile(String objectName) throws Exception {minioClient.removeObject(RemoveObjectArgs.builder().bucket(minioConfig.getBucketName()).object(objectName).build());}/*** 获取文件列表*/public List<String> listFiles() throws Exception {List<String> list = new ArrayList<>();Iterable<Result<Item>> results = minioClient.listObjects(ListObjectsArgs.builder().bucket(minioConfig.getBucketName()).build());for (Result<Item> result : results) {Item item = result.get();list.add(item.objectName());}return list;}
}

六、创建文件控制器

FileController.java:

@RestController
@RequestMapping("/file")
@RequiredArgsConstructor
public class FileController {private final MinioUtils minioUtils;@PostMapping("/upload")public String upload(@RequestParam("file") MultipartFile file) throws Exception {if (file.isEmpty()) {return "上传失败,请选择文件";}String objectName = UUID.randomUUID() + "-" + file.getOriginalFilename();return minioUtils.uploadFile(file, objectName);}@GetMapping("/download")public ResponseEntity<InputStreamResource> download(@RequestParam String fileName) throws Exception {InputStream inputStream = minioUtils.downloadFile(fileName);return ResponseEntity.ok().contentType(MediaType.APPLICATION_OCTET_STREAM).header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\"").body(new InputStreamResource(inputStream));}@DeleteMapping("/delete")public String delete(@RequestParam String fileName) throws Exception {minioUtils.deleteFile(fileName);return "删除成功";}@GetMapping("/list")public List<String> listFiles() throws Exception {return minioUtils.listFiles();}
}

七、测试验证

  1. 上传文件测试(使用Postman):

    • POST /file/upload
    • 选择form-data格式,key为"file"
  2. 下载文件测试:

    • GET /file/download?fileName={文件名}
  3. 文件列表查询:

    • GET /file/list

八、常见问题处理

  1. 连接失败检查:

    • 确认MinIO服务状态
    • 检查endpoint地址和端口
    • 验证access-key/secret-key是否正确
  2. 存储桶权限问题:

    • 在MinIO控制台设置存储桶访问策略
    • 或通过SDK设置策略:
    minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucketName).config(policyJson).build());
    
  3. 大文件上传:

    • 使用分片上传(multipart upload)
    • 调整客户端超时时间

九、扩展功能建议

  1. 添加文件预览功能
  2. 实现文件秒传(MD5校验)
  3. 集成Spring Security进行权限控制
  4. 添加文件分享链接(预签名URL)

整合完成后,你的Spring Boot应用即可实现完整的文件存储管理功能。建议在实际生产环境中:

  1. 使用HTTPS连接
  2. 配置合理的存储桶策略
  3. 定期进行存储桶维护
  4. 监控存储空间使用情况
http://www.dtcms.com/wzjs/256406.html

相关文章:

  • 建筑公司网站能显示二级建造师报名吗刷网站百度关键词软件
  • 长春建站模板展示主流搜索引擎有哪些
  • 有哪些做ppt网站太原seo关键词优化
  • 金钟街网站建设济南网站优化
  • 学习网站建设东莞网络推广培训
  • 美国新冠肺炎疫情最新情况seo搜索推广费用多少
  • 莱芜网站建设费用强强seo博客
  • ui设计网站建设是什么女教师遭网课入侵直播录屏曝光8
  • 如何做com的网站seo服务
  • wordpress 站点地址迅雷磁力链bt磁力种子
  • wordpress 静态化 linux兰州seo公司
  • 广州物流网站建设自己做一个网站要多少钱
  • 网站开发定价seo入门讲解
  • 温州网站优化推广方案设计网站模板
  • 内部网站建设如何自己开网站
  • 做流量哪个网站好年度关键词
  • 网站建设过程中要怎么打开速度市场营销策划公司
  • 论坛网站建设方案深圳网络营销推广渠道
  • 顺义建站好的公司做百度推广
  • 福州专业网站建设价格宁波seo推广推荐
  • 湖南网站建设哪家好seo名词解释
  • 南京市网站建设公司免费发布广告信息平台
  • 怎么做企业官方网站国外比较开放的社交软件
  • 网站建设siteserver百度首页
  • 多种语言网站如何推广seo
  • 珠海电商网站制作推广引流方法与渠道
  • 互联网网站建设新闻开发网站需要多少钱
  • 毛片a做片在线观看网站有哪些谷歌seo关键词优化
  • 海澜之家网站建设的计划农产品网络营销
  • 珠海做网站优化的公司投稿网站