Skip to content

Digitalhainan OSS 使用指南

概述

本项目是 OSS 聚合工具包,封装了阿里云 OSS、华为云 OBS、S3 协议的统一接口。有 OSS 需求时,统一使用 IObjectStorageService 接口。

支持的客户端类型: aliyun(默认)| obs | s3 | ds(动态多数据源)

前置检查清单

使用 OSS 功能前,请确认:

  • [ ] 项目已引入 oss-spring-boot-starter 依赖
  • [ ] 已在 application-local.yml / application-dev.yml / application-prd.yml 中配置对应云厂商的 OSS 参数
  • [ ] 已确定使用的客户端类型(aliyun/obs/s3/ds)

依赖配置

xml
<dependency>
    <groupId>cn.com.digitalhainan</groupId>
    <artifactId>oss-spring-boot-starter</artifactId>
    <version>${digitalhainan.version}</version>
</dependency>

参考文档索引

文档内容链接
基础操作指南文件上传、下载、删除、配置说明basic-operations.md
高级功能指南签名 URL、分片上传、断点续传、访问权限advanced-features.md
集成指南动态数据源切换、最佳实践、配置模板integration-guide.md

Step-by-step 使用流程

Step 1:注入服务

java
@Autowired
private IObjectStorageService ossService;

Step 2:选择操作类型

操作目标调用方法
上传字节数组ossService.upload(objectName, bytes)
上传输入流ossService.upload(objectName, inputStream)
上传本地文件ossService.upload(objectName, localFile)
下载为输入流ossService.download(objectName)
下载到本地ossService.download(objectName, localFile)
删除文件ossService.delete(objectName)
获取临时 URLossService.securityUrlStr(objectName, expirationMillis)

Step 3:处理返回结果

java
// 上传
ObjectStorageResponse resp = ossService.upload(objectName, bytes);

// 下载
InputStream stream = ossService.download(objectName);

// 获取临时 URL
String url = ossService.securityUrlStr(objectName, expirationMillis);

场景选择速查

场景参考文档
文件上传/下载/删除basic-operations.md
单/多数据源配置basic-operations.md
签名 URLadvanced-features.md
分片上传/断点续传advanced-features.md
动态数据源切换integration-guide.md
最佳实践integration-guide.md

核心方法速查

java
// 上传
upload(String objectName, byte[] bytes)
upload(String objectName, InputStream inputStream)
upload(String objectName, String localFile)

// 下载
download(String objectName)                    // 返回 InputStream
download(String objectName, String localFile)  // 保存到本地

// 删除
delete(String objectName)

// URL
securityUrl(String objectName, Long expiration)              // 返回 URL
securityUrlStr(String objectName, Long expiration)           // 返回 String
getObjectUrl(String objectName)                              // 自定义域名 URL
getDefaultObjectUrl(String objectName)                       // 默认域名 URL

// 分片上传
getUploadId(String objectName)
uploadPart(String objectName, String uploadId, int partNumber, long offset, long currPartSize, byte[] bytes)
completeMultipartUpload(String objectName, String uploadId, List<UploadPart> partEtags)

// 断点续传
resumeUpload(String objectName, String localFile, int taskNum, long partSize)

Do's and Don'ts

Do(推荐做法)Don't(避免做法)
统一使用 IObjectStorageService 接口直接使用阿里云/华为云/S3 原生 SDK
ds 模式在 finally 块中调用 OssDynamicDataSourceHolder.clearDataSource()动态数据源切换后不清除,导致后续操作数据源错乱
分片上传 partNumber 从 1 开始计数从 0 开始计数
断点续传 partSize 控制在 100KB ~ 5GB 范围设置过大或过小导致性能问题

Power By 数字海南