对象存储中心
提供了文件上传下载,分片上传等功能的接口和模型定义。
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 |
使用流程与问题解决
- 引入maven依赖
xml
<dependency>
<groupId>com.ikingtech.platform</groupId>
<artifactId>service-oss</artifactId>
</dependency>
- 添加配置
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
- 创建文件表
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;
- 前端调用或者后台调用
- 通过swagger调用
- 通过接口调用
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);
常见问题解决
- minio服务器与业务服务器时间不一致
shell
Caused by: io.minio.errors.ErrorResponseException: The difference between the request time and the server's time is too large.
- 解决方案
修改服务器时间,使之与业务服务器时间保持一致。
- 文件大小限制
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