Java系列-OSS文件上传
2025年9月13日大约 1 分钟
Java系列-OSS文件上传
准备工作
配置访问控制
产品与服务 -> 访问控制 -> 用户管理 -> 新建用户

创建存储空间
产品与服务 -> 对象存储 OSS -> 创建 Bucket

设置文件授权
选择 Bucket -> 文件管理 -> 授权

设置读写权限
选择 Bucket -> 基础设置 -> 读写权限 -> 公共读

开发流程
POM
<!-- Ali Cloud -->
<aliyun-sdk-oss.version>3.6.0</aliyun-sdk-oss.version>
<!-- Ali Cloud -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>${aliyun-sdk-oss.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
OSS 配置类
package com.page.cloud.plus.commons.utils.onfiguration;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* OSS 配置类
* <p>Title: OssConfiguration</p>
*
* @author cangbao
* @date 2019-10-11 5:09
* @package com.page.cloud.plus.commons.utils.configuration
*/
@Configuration
public class OssConfiguration {
@Bean
public static OSSClientBuilder init(){
return new OSSClientBuilder();
}
}
OSS 工具类
package com.page.cloud.plus.commons.utils;
import com.aliyun.oss.OSS;
import com.aliyun.oss.model.PutObjectRequest;
import com.page.cloud.plus.commons.exception.OssException;
import com.page.cloud.plus.commons.utils.onfiguration.OssConfiguration;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.util.UUID;
/**
* AliYun OSS 工具类
* <p>Title: OssClientUtils</p>
*
* @author cangbao
* @date 2019-10-11 5:17
* @package com.page.cloud.plus.commons.utils
*/
public class OssClientUtils {
private static final String ENDPOINT = "oss-cn-shanghai.aliyuncs.com";
private static final String ACCESS_KEY_ID = "ACCESS_KEY_ID";
private static final String ACCESS_KEY_SECRET = "ACCESS_KEY_SECRET";
private static final String BUCKET_NAME = "sansei";
/**
* 文件上传
* @param multipartFile
* @return
*/
public static String upload(MultipartFile multipartFile){
String path = null;
OSS client = OssConfiguration.init().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
try {
String fileName = multipartFile.getOriginalFilename();
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
String newName = UUID.randomUUID() + "." + suffix;
client.putObject(new PutObjectRequest(BUCKET_NAME, newName, new ByteArrayInputStream(multipartFile.getBytes())));
path = "http://" + BUCKET_NAME + "." + ENDPOINT + "/" + newName;
return path;
}catch (Exception e){
throw new OssException("上传文件失败,请检查配置信息");
}finally {
client.shutdown();
}
}
}
测试结果
@RestController
@RequestMapping(value = "upload")
public class UploadController {
/**
* 文件上传
*
* @param multipartFile @{code MultipartFile}
* @return {@link ResponseResult<FileInfo>} 文件上传路径
*/
@PostMapping(value = "")
public ResponseResult<FileInfo> upload(MultipartFile multipartFile) {
FileInfo fileInfo = new FileInfo(OssClientUtils.upload(multipartFile));
// 上传文件路径 = http://BUCKET_NAME.ENDPOINT/自定义路径/fileName
return new ResponseResult<FileInfo>(CodeStatus.FAIL, "文件上传成功", fileInfo);
}
}
