阿里云oss图片上传
江神
背景
上周接到一个新的需求,要在客户端上报图片信息,以前是存在七牛上,现在要全部转到阿里云的oss上,然后那周基本都在啃阿里云的官方文档,最后完成了这个需求,现在来分享一下Java开发的SpringBoot项目怎么引入oss并且使用还有我的踩坑经历。
阿里云oss使用
1、先引入maven依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.4.2</version>
</dependency>
2、编写配置类获取ossClient对象
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Value("${aliyun.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.accessKeySecret}")
private String accessKeySecret;
@Bean
public OSSClient ossClient() {
return new OSSClient(endpoint, accessKeyId, accessKeySecret);
}
- endpoint:你的endpoint,在阿里云oss控制台可以看到
- accessKeyId:你的AccessKey,创建bucketName就可以看到
- accessKeySecret:你的SecretKey,创建bucketName就可以看到
3、编写上传图片的代码
@Value("${aliyun.oss.bucketName}")
private String bucketName;
// urlPrefix: http://bucketName.endpoint/,bucketName喝endpoint在阿里云oss控制台都可以看到
@Value("${aliyun.oss.urlPrefix}")
private String urlPrefix;
private static final String[] IMAGE_TYPE = new String[]{".jpg", ".jpeg", ".png"};
public void add(FeedbackRequest data) {
// 阿里云oss图片上传
if (data.getFeedbackImgs() != null) {
if (!data.getFeedbackImgs().isEmpty()) {
String fileName = data.getFeedbackImgs().getOriginalFilename();
String filePath = this.getFilePath(fileName);
boolean isImage = false;
for (String type : IMAGE_TYPE) {
if (StringUtils.endsWithIgnoreCase(fileName, type)) {
isImage = true;
break;
if (!isImage) {
//格式错误
throw new RuntimeException("格式错误,必须是图片格式");
try {
ossClient.putObject(bucketName, filePath, new ByteArrayInputStream(data.getFeedbackImgs().getBytes()));