Skip to content

OSS 基础操作指南

快速开始

1. 注入服务

java
@Autowired
private IObjectStorageService ossService;

2. 基础调用

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

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

// 删除
ossService.delete(objectName);

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

上传操作

字节数组上传

适用于接收 MultipartFile 等场景。

java
@Service
public class UploadService {
    
    @Autowired
    private IObjectStorageService ossService;
    
    public ObjectStorageResponse uploadFile(MultipartFile file) throws IOException {
        String objectName = "uploads/" + System.currentTimeMillis() + "_" + file.getOriginalFilename();
        return ossService.upload(objectName, file.getBytes());
    }
}

输入流上传

java
public ObjectStorageResponse uploadStream(String objectName, InputStream inputStream) {
    return ossService.upload(objectName, inputStream);
}

本地文件上传

java
public ObjectStorageResponse uploadLocalFile(String localFilePath) {
    String objectName = "files/" + new File(localFilePath).getName();
    return ossService.upload(objectName, localFilePath);
}

下载操作

下载到本地文件

java
public void downloadFile(String objectName, String savePath) {
    ossService.download(objectName, savePath);
}

下载为输入流

java
public void processFile(String objectName) throws IOException {
    try (InputStream stream = ossService.download(objectName)) {
        // 处理文件流
    }
}

删除操作

java
public void deleteFile(String objectName) {
    ossService.delete(objectName);
}

配置方式

单数据源

yaml
digitalhainan:
  component:
    oss:
      client-type: aliyun
      endpoint: https://oss-cn-hangzhou.aliyuncs.com
      access-key-id: xxx
      access-key-secret: xxx
      bucket-name: xxx
      domain: https://your-domain.com  # 可选

多数据源(ds 模式)

yaml
digitalhainan:
  component:
    oss:
      client-type: ds
      default-ds: aliyun-oss
      ds:
        aliyun-oss:
          client-type: aliyun
          endpoint: https://oss-cn-hangzhou.aliyuncs.com
          access-key-id: xxx
          access-key-secret: xxx
          bucket-name: bucket1
        huawei-obs:
          client-type: obs
          endpoint: https://obs.cn-north-4.myhuaweicloud.com
          access-key-id: xxx
          access-key-secret: xxx
          bucket-name: bucket2
        minio-s3:
          client-type: s3
          endpoint: http://localhost:9000
          access-key-id: xxx
          access-key-secret: xxx
          bucket-name: bucket3
          region: us-east-1
          path-style-access: true

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

核心方法速查

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

Power By 数字海南