Integrating Alibaba Cloud OSS in Spring Boot Applications

To integrate Alibaba Cloud Object Storage Service (OSS) into a Spring Boot project, start by defining configuraton properites in your application configuration file:

oss:
  config:
    endpoint: ${oss.config.endpoint}
    access-key: ${oss.config.access-key}
    secret-key: ${oss.config.secret-key}
    bucket: ${oss.config.bucket}

Create a configuration properties class to bind these values:

@ConfigurationProperties(prefix = "oss.config")
@Data
public class OssConfigProperties {
    private String endpoint;
    private String accessKey;
    private String secretKey;
    private String bucket;
}

Develop an OSS interaction utility class with proper resource management:

@Slf4j
public class OssUploader {

    private final String endpoint;
    private final String accessKey;
    private final String secretKey;
    private final String bucket;

    public OssUploader(String endpoint, String accessKey, String secretKey, String bucket) {
        this.endpoint = endpoint;
        this.accessKey = accessKey;
        this.secretKey = secretKey;
        this.bucket = bucket;
    }

    public String upload(byte[] fileData, String objectName) {
        try (OSS ossClient = new OSSClientBuilder().build(endpoint, accessKey, secretKey)) {
            ossClient.putObject(bucket, objectName, new ByteArrayInputStream(fileData));
            return String.format("https://%s.%s/%s", bucket, endpoint, objectName);
        } catch (OSSException | ClientException e) {
            log.error("OSS operation failed: {}", e.getMessage());
            throw new RuntimeException("File upload failed", e);
        }
    }
}

Register the utility as a Spring bean using configuration class:

@Configuration
public class OssBeanConfig {

    @Bean
    public OssUploader ossUploader(OssConfigProperties config) {
        return new OssUploader(
            config.getEndpoint(),
            config.getAccessKey(),
            config.getSecretKey(),
            config.getBucket()
        );
    }
}

Implement a file upload endpoint in your controller:

@RestController
@RequestMapping("/api/files")
public class FileUploadController {

    private final OssUploader uploader;

    public FileUploadController(OssUploader uploader) {
        this.uploader = uploader;
    }

    @PostMapping("/upload")
    public String handleFileUpload(@RequestParam("file") MultipartFile file) {
        String originalName = file.getOriginalFilename();
        String extension = originalName.substring(originalName.lastIndexOf('.'));
        String fileName = UUID.randomUUID() + extension;
        return uploader.upload(file.getBytes(), fileName);
    }
}

Tags: alibaba-cloud-oss spring-boot object-storage file-upload

Posted on Tue, 20 Oct 2026 16:45:48 +0000 by ginger76