首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

SpringBoot + minio实现文件切片极速上传技术源码(敢说全网整合完整度前三)

后端 50.42KB 40 需要积分: 1
立即下载

资源介绍:

Minio是一款开源的对象存储服务器,它可以运行在多种操作系统上,包括Linux、Windows和MacOS等。它提供了一种简单、可扩展、高可用的对象存储解决方案,支持多种数据格式,包括对象、块和文件等。 以下是Minio的主要特点: 简单易用:Minio的安装和配置非常简单,只需要下载并运行相应的二进制文件即可。它提供了一个Web UI,可以通过界面管理存储桶和对象。 可扩展性:Minio可以轻松地扩展到多个节点,以提供高可用性和容错能力。它支持多种部署模式,包括单节点、主从复制和集群等。 高可用性:Minio提供了多种机制来保证数据的可靠性和可用性,包括冗余备份、数据复制和故障转移等。 安全性:Minio提供了多种安全机制来保护数据的机密性和完整性,包括SSL/TLS加密、访问控制和数据加密等。 多语言支持:Minio支持多种编程语言,包括Java、Python、Ruby和Go等。 社区支持:Minio是一个开源项目,拥有庞大的社区支持和贡献者。它的源代码可以在GitHub上获得,并且有一个活跃的邮件列表和论坛。 对象存储:Minio的核心功能是对象存储。它允许用户
package com.xiaohui.utils; import com.xiaohui.config.MinioConfig; import io.minio.*; import io.minio.errors.*; import io.minio.http.Method; import lombok.SneakyThrows; import org.apache.tomcat.util.http.fileupload.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.time.ZonedDateTime; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; /** * @Description Minio工具类 * @Author IT小辉同学 * @Date 2023/06/02 */ @Component public class MinioUtils { @Autowired private MinioClient minioClient; @Autowired private MinioConfig configuration; /** * @param name 名字 * @return boolean * @Description description: 判断bucket是否存在,不存在则创建 * @Author IT小辉同学 * @Date 2023/06/02 */ public boolean existBucket(String name) { boolean exists; try { exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(name).build()); if (!exists) { minioClient.makeBucket(MakeBucketArgs.builder().bucket(name).build()); exists = true; } } catch (Exception e) { e.printStackTrace(); exists = false; } return exists; } /** * @param bucketName 存储bucket名称 * @return {@link Boolean } * @Description 创建存储bucket * @Author IT小辉同学 * @Date 2023/06/02 */ public Boolean makeBucket(String bucketName) { try { minioClient.makeBucket(MakeBucketArgs.builder() .bucket(bucketName) .build()); } catch (Exception e) { e.printStackTrace(); return false; } return true; } /** * @param bucketName 存储bucket名称 * @return {@link Boolean } * @Description 删除存储bucket * @Author IT小辉同学 * @Date 2023/06/02 */ public Boolean removeBucket(String bucketName) { try { minioClient.removeBucket(RemoveBucketArgs.builder() .bucket(bucketName) .build()); } catch (Exception e) { e.printStackTrace(); return false; } return true; } /** * @param fileName 文件名称 * @param time 时间 * @return {@link Map } * @Description 获取上传临时签名 * @Author IT小辉同学 * @Date 2023/06/02 */ @SneakyThrows public Map getPolicy(String fileName, ZonedDateTime time) { PostPolicy postPolicy = new PostPolicy(configuration.getBucketName(), time); postPolicy.addEqualsCondition("key", fileName); try { Map map = minioClient.getPresignedPostFormData(postPolicy); HashMap map1 = new HashMap<>(); map.forEach((k, v) -> { map1.put(k.replaceAll("-", ""), v); }); map1.put("host", configuration.getUrl() + "/" + configuration.getBucketName()); return map1; } catch (ErrorResponseException e) { e.printStackTrace(); } catch (InsufficientDataException e) { e.printStackTrace(); } catch (InternalException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (InvalidResponseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (ServerException e) { e.printStackTrace(); } catch (XmlParserException e) { e.printStackTrace(); } return null; } /** * @param objectName 对象名称 * @param method 方法 * @param time 时间 * @param timeUnit 时间单位 * @return {@link String } * @Description 获取上传文件的url * @Author IT小辉同学 * @Date 2023/06/02 */ public String getPolicyUrl(String objectName, Method method, int time, TimeUnit timeUnit) { try { return minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder() .method(method) .bucket(configuration.getBucketName()) .object(objectName) .expiry(time, timeUnit).build()); } catch (ErrorResponseException e) { e.printStackTrace(); } catch (InsufficientDataException e) { e.printStackTrace(); } catch (InternalException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (InvalidResponseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (XmlParserException e) { e.printStackTrace(); } catch (ServerException e) { e.printStackTrace(); } return null; } /** * @param file 文件 * @param fileName 文件名称 * @Description 上传文件 * @Author IT小辉同学 * @Date 2023/06/02 */ public void upload(MultipartFile file, String fileName) { // 使用putObject上传一个文件到存储桶中。 try { InputStream inputStream = file.getInputStream(); minioClient.putObject(PutObjectArgs.builder() .bucket(configuration.getBucketName()) .object(fileName) .stream(inputStream, file.getSize(), -1) .contentType(file.getContentType()) .build()); } catch (ErrorResponseException e) { e.printStackTrace(); } catch (InsufficientDataException e) { e.printStackTrace(); } catch (InternalException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (InvalidResponseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (ServerException e) { e.printStackTrace(); } catch (XmlParserException e) { e.printStackTrace(); } } /** * @param objectName 对象名称 * @param time 时间 * @param timeUnit 时间单位 * @return {@link String } * @Description 根据filename获取文件访问地址 * @Author IT小辉同学 * @Date 2023/06/02 */ public String getUrl(String objectName, int time, TimeUnit timeUnit) { String url = null; try { url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder() .method(Method.GET) .bucket(configuration.getBucketName()) .object(objectName)

资源文件列表:

MinioExample.zip 大约有80个文件
  1. MinioExample/
  2. MinioExample/.gitignore 395B
  3. MinioExample/.idea/
  4. MinioExample/.idea/.gitignore
  5. MinioExample/.idea/aws.xml 304B
  6. MinioExample/.idea/checkstyle-idea.xml 721B
  7. MinioExample/.idea/compiler.xml 604B
  8. MinioExample/.idea/encodings.xml 267B
  9. MinioExample/.idea/inspectionProfiles/
  10. MinioExample/.idea/inspectionProfiles/Project_Default.xml 155B
  11. MinioExample/.idea/jarRepositories.xml 880B
  12. MinioExample/.idea/misc.xml 513B
  13. MinioExample/.idea/uiDesigner.xml 8.71KB
  14. MinioExample/.idea/workspace.xml 6.42KB
  15. MinioExample/.idea/ZeppelinRemoteNotebooks/
  16. MinioExample/HELP.md 853B
  17. MinioExample/pom.xml 3.43KB
  18. MinioExample/src/
  19. MinioExample/src/main/
  20. MinioExample/src/main/java/
  21. MinioExample/src/main/java/com/
  22. MinioExample/src/main/java/com/xiaohui/
  23. MinioExample/src/main/java/com/xiaohui/config/
  24. MinioExample/src/main/java/com/xiaohui/config/MinioConfig.java 804B
  25. MinioExample/src/main/java/com/xiaohui/controller/
  26. MinioExample/src/main/java/com/xiaohui/controller/MinioFileUploadController.java 1.81KB
  27. MinioExample/src/main/java/com/xiaohui/domain/
  28. MinioExample/src/main/java/com/xiaohui/MinioExampleApplication.java 328B
  29. MinioExample/src/main/java/com/xiaohui/utils/
  30. MinioExample/src/main/java/com/xiaohui/utils/AjaxResult.java 3.84KB
  31. MinioExample/src/main/java/com/xiaohui/utils/Constants.java 2.94KB
  32. MinioExample/src/main/java/com/xiaohui/utils/HttpStatus.java 1.79KB
  33. MinioExample/src/main/java/com/xiaohui/utils/MinioUtils.java 11.06KB
  34. MinioExample/src/main/resources/
  35. MinioExample/src/main/resources/application.yml 344B
  36. MinioExample/src/main/resources/static/
  37. MinioExample/src/main/resources/static/index.html 79B
  38. MinioExample/src/test/
  39. MinioExample/src/test/java/
  40. MinioExample/src/test/java/com/
  41. MinioExample/src/test/java/com/xiaohui/
  42. MinioExample/src/test/java/com/xiaohui/MinioExampleApplicationTests.java 218B
  43. MinioExample/target/
  44. MinioExample/target/classes/
  45. MinioExample/target/classes/application.yml 344B
  46. MinioExample/target/classes/com/
  47. MinioExample/target/classes/com/xiaohui/
  48. MinioExample/target/classes/com/xiaohui/config/
  49. MinioExample/target/classes/com/xiaohui/config/MinioConfig.class 3.36KB
  50. MinioExample/target/classes/com/xiaohui/controller/
  51. MinioExample/target/classes/com/xiaohui/controller/MinioFileUploadController.class 2.08KB
  52. MinioExample/target/classes/com/xiaohui/MinioExampleApplication.class 717B
  53. MinioExample/target/classes/com/xiaohui/utils/
  54. MinioExample/target/classes/com/xiaohui/utils/AjaxResult.class 2.35KB
  55. MinioExample/target/classes/com/xiaohui/utils/Constants.class 1.78KB
  56. MinioExample/target/classes/com/xiaohui/utils/HttpStatus.class 881B
  57. MinioExample/target/classes/com/xiaohui/utils/MinioUtils.class 11.81KB
  58. MinioExample/target/classes/static/
  59. MinioExample/target/classes/static/index.html 79B
  60. MinioExample/target/generated-sources/
  61. MinioExample/target/generated-sources/annotations/
  62. MinioExample/target/generated-test-sources/
  63. MinioExample/target/generated-test-sources/test-annotations/
  64. MinioExample/target/maven-archiver/
  65. MinioExample/target/maven-archiver/pom.properties 109B
  66. MinioExample/target/maven-status/
  67. MinioExample/target/maven-status/maven-compiler-plugin/
  68. MinioExample/target/maven-status/maven-compiler-plugin/compile/
  69. MinioExample/target/maven-status/maven-compiler-plugin/compile/default-compile/
  70. MinioExample/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst 273B
  71. MinioExample/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst 826B
  72. MinioExample/target/maven-status/maven-compiler-plugin/testCompile/
  73. MinioExample/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/
  74. MinioExample/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst 47B
  75. MinioExample/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst 126B
  76. MinioExample/target/test-classes/
  77. MinioExample/target/test-classes/com/
  78. MinioExample/target/test-classes/com/xiaohui/
  79. MinioExample/target/test-classes/com/xiaohui/MinioExampleApplicationTests.class 545B
  80. MinioExample/target/xiaohui-0.0.1-SNAPSHOT.jar 12.31KB
0评论
提交 加载更多评论
其他资源 camunda7.15版本汉化
camunda7.15版本汉化
度哥神器-视频下载工具
度哥神器:网站视频下载工具
Oracle中文教程
Oracle的入门和提高,适于初级和中级
notepad++ 8.4.4版本
notepad++官网被封,这里提供一个notepad++ 8.4.4的版本将就用吧 里面有32位和64位2个版本。
rocketmq实战与源码分析.zip
由阿里巴巴根据[中间件兴趣圈]RocketMQ专栏文章,整理的两本电子书,总的来看主要从如下三部分进行展开: 1线上故障分析结合笔者日均消息流转千亿级别的消息集群的运维经验、网友的问题提问整理提取的精华。 2 源码分析篇主要是对RocketMQ4.4.0及其后续版本中的新加入的功能进行源码级别的剖析,主要包括ACL、消息轨迹、多副本。 3 认知篇主要展示笔者阅读源码的经验分享,以及如何以布道师的身份参与Apache顶级开源项目的经历。
AFNetworking2.0
AFNetworking2.0
免费下载离线数据库 GeoLite2-city.mmdb(60Mb) GeoLite2-country.mmdb(3.7Mb)
GeoLite2 数据库是免费的 IP 地理定位数据库,可与 MaxMind 的 GeoIP2 数据库相媲美,但不如MaxMind 的 GeoIP2 数据库准确。GeoLite2国家、城市和 ASN 数据库每周二更新。GeoLite2 数据也可作为GeoLite2 Country 和 GeoLite2 City web 服务中的 web 服务使用。GeoLite2 Web 服务的用户每天限制为每项服务 1000 个 IP 地址查找。 GeoLite2-city.mmdb精确到城市 GeoLite2-country.mmdb精确到国家
微信支付demo
一个关于微信支付的demo,主要是java端的后台