https://help.aliyun.com/document_detail/32008.html?spm=5176.208357.1107607.21.1d7a390fDBZD0s
阿里云OSS、javasdk
1、依赖
<!-- 阿里云oss依赖 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
<!-- 日期工具栏依赖 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
2、设置AccessKey和Serect
# 阿里云
aliyun.oss.regionId=default
aliyun.oss.accessKeyId=LTAI***********cZtWanfAY7
aliyun.oss.accessKeySecret=gxPRkZg*************eD4LBM
aliyun.oss.endpoint=oss-cn-guangzhou.aliyuncs.com
aliyun.oss.bucketName=yygh-soulike
3、设置网关
#设置路由id
spring.cloud.gateway.routes[4].id=service-oss
#设置路由的uri
spring.cloud.gateway.routes[4].uri=lb://service-oss
#设置路由断言,代理servicerId为auth-service的/auth/路径
spring.cloud.gateway.routes[4].predicates= Path=/*/oss/**
先测试:
@SpringBootTest(classes = ServiceOssApplication.class)
@Data
public class OssTest {
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
@Value("${aliyun.oss.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.oss.secret}")
private String accessKeySecret;
@Value("${aliyun.oss.bucketName}")
private String bucketName;
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Test
public void create() {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 创建存储空间。
ossClient.createBucket("bucketName");
// 关闭OSSClient。
ossClient.shutdown();
}
}
4、上传文件
属性获得:
@Component
public class OssPropertiesUtils implements InitializingBean {
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
@Value("${aliyun.oss.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret;
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Value("${aliyun.oss.regionId}")
private String regionId;
@Value("${aliyun.oss.bucketName}")
private String bucketName;
public static String REGION_Id;
public static String ACCESS_KEY_ID;
public static String ACCESS_KEY_SECRET;
public static String ENDPOINT;
public static String BUCKET_NAME;
@Override
public void afterPropertiesSet() throws Exception {
REGION_Id = regionId;
ACCESS_KEY_ID = accessKeyId;
ACCESS_KEY_SECRET = accessKeySecret;
ENDPOINT = endpoint;
BUCKET_NAME = bucketName;
}
}
MVC:
@RestController
@RequestMapping("/api/oss/file")
public class FileApiController {
@Autowired
private FileService fileService;
//上传文件到阿里云oss
@PostMapping("/fileUpload")
public Result fileUpload(MultipartFile file) {
//获取上传文件
String url = fileService.upload(file);
return Result.ok(url);
}
}
@Service
public class FileServiceImpl implements FileService {
@Override
public String upload(MultipartFile file) {
//加上随机值,注意不要有横杠
String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "_" + file.getOriginalFilename();
//日期目录结构,用斜杠方式更好免得搞出365个文件
fileName = new DateTime().toString("yyyy/MM/dd") + "/" + fileName;
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(OssPropertiesUtils.ENDPOINT, OssPropertiesUtils.ACCESS_KEY_ID, OssPropertiesUtils.ACCESS_KEY_SECRET);
try {
// 填写Bucket名称和Object完整路径。Object完整路径中不能包含Bucket名称。
ossClient.putObject(OssPropertiesUtils.BUCKET_NAME, fileName, file.getInputStream());
} catch (IOException e) {
e.printStackTrace();
return null;
}
// 关闭OSSClient。
ossClient.shutdown();
//拿到上传文件的路径【注意文件名的拼接形式】
String url = "https://" + OssPropertiesUtils.BUCKET_NAME + "." + OssPropertiesUtils.ENDPOINT + "/" + fileName;
https://yygh-soulike.oss-cn-guangzhou.aliyuncs.com/2021/06/10/10fb1269944c4a009340a862b9b1b2fc_邮箱授权码.txt
return url;
}
}
