Skip to content

对象存储中心

提供了文件上传下载,分片上传等功能的接口和模型定义。

Maven坐标

xml
<dependency>
    <groupId>com.ikingtech.framework</groupId>
    <artifactId>sdk-oss-api</artifactId>
</dependency>

接口列表

接口地址接口说明
/oss/upload上传文件。
/oss/upload/parallel分片上传文件(目前仅Amazon S3类型支持分片上传)。
/oss/upload/byte上传文件(Byte数组)。
/oss/download下载文件,由平台的文件服务先下载文件,再将文件流返回。
/oss/download/byte下载文件(Byte数组)。
/oss/delete根据文件相对路径删除一个文件,无论指定的文件相对路径是否存在都会返回执行成功。

对象存储服务嵌入组件

提供多个平台的对象存储协议的实现。

请确保您引入了以下依赖

xml

<dependency>
    <groupId>com.ikingtech.framework</groupId>
    <artifactId>sdk-oss-embedded</artifactId>
</dependency>

配置

参数参数说明
enabled是否开启文件服务,默认不开启



storageType
存储协议类型
本地存储:local
Minio存储:minio
Amazon S3存储:aws_s3
阿里云存储:ali_oss
腾讯云存储:tencent_cos
url文件存储地址,示例:http://127.0.0.1:9000
accessKey存储服务账号
secretKey存储服务密码
defaultBucketName存储库桶名称
region亚马逊S3存储地理位置,示例:us-east-1

使用流程与问题解决

  1. 引入maven依赖
xml
<dependency>
    <groupId>com.ikingtech.platform</groupId>
    <artifactId>service-oss</artifactId>
</dependency>
  1. 添加配置
yaml
iking:
  framework:
    oss:
      enabled: true
      storage-type: MINIO
      url: http://192.168.x.xx:9000
      access-key: username
      secret-key: password
      default-bucket-name: iking01
      region: us-east-1
  1. 创建文件表
sql
DROP TABLE IF EXISTS `oss_file`;
CREATE TABLE `oss_file`
(
    `id`          char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci     NOT NULL COMMENT '主键/文件编号',
    `origin_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '原始文件名称',
    `tenant_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci  NULL DEFAULT '' COMMENT '租户标识',
    `file_size`   varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci  NOT NULL COMMENT '文件大小',
    `suffix`      varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci  NULL DEFAULT '' COMMENT '文件后缀',
    `url`         varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件访问相对路径',
    `dir_name`    varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci  NOT NULL COMMENT '文件服务器目录',
    `path`        varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件服务器路径',
    `md5`         varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '文件md5',
    `use_count`   int(10) UNSIGNED                                              NULL DEFAULT 0 COMMENT '文件使用次数',
    `create_time` datetime(0)                                                   NULL DEFAULT NULL COMMENT '创建时间',
    `create_by`   char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci     NULL DEFAULT '' COMMENT '创建人编号',
    `create_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci  NULL DEFAULT '' COMMENT '创建人姓名',
    `update_time` datetime(0)                                                   NULL DEFAULT NULL COMMENT '更新时间',
    `update_by`   char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci     NULL DEFAULT '' COMMENT '更新人编号',
    `update_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci  NULL DEFAULT '' COMMENT '更新人姓名',
    PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_general_ci COMMENT = '文件'
  ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;
  1. 前端调用或者后台调用
  • 通过swagger调用

对象存储swagger调用.png

  • 通过接口调用
java
byte[] fileData = "This is a sample file content.".getBytes();
MockMultipartFile file = new MockMultipartFile("file", "filename.txt", "text/plain", fileData);
R<OssFileDTO> upload = ossApi.upload(file, Tools.Str.EMPTY);

常见问题解决

  1. minio服务器与业务服务器时间不一致
shell
Caused by: io.minio.errors.ErrorResponseException: The difference between the request time and the server's time is too large.
  • 解决方案

修改服务器时间,使之与业务服务器时间保持一致。

  1. 文件大小限制
shell
org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.
  • 解决方案
yaml
spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB