OSS对象存储
- 前提:注册阿里云账号,开通OSS服务(免费),获取AccessKey和AccessKeySecret
1、导入依赖
- 这里joda-time的版本必须为2.x.x版本,否则和后面代码冲突
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.5</version>
<scope>compile</scope>
</dependency>
2、配置OSS基本信息
server.port=8004
spring.application.name=server_oss
#spring.profiles.active=dev
aliyun.oss.file.endpoint=oss-cn-hangzhou.aliyuncs.com
aliyun.oss.file.keyid=*******************
aliyun.oss.file.keysecret==*******************
aliyun.oss.file.bucketname=wagn-edu
3、创建类读取OSS基本信息
package com.wagn.oss.utils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class ReadUtil implements InitializingBean {
@Value("${aliyun.oss.file.endpoint}")
private String endpoint;
@Value("${aliyun.oss.file.keyid}")
private String keyid;
@Value("${aliyun.oss.file.keysecret}")
private String keysecret;
@Value("${aliyun.oss.file.bucketname}")
private String bucketname;
public static String END_POINT;
public static String KEY_ID;
public static String KEY_SECRET;
public static String BUCKET_NAME;
@Override
public void afterPropertiesSet() throws Exception {
END_POINT = endpoint;
KEY_ID = keyid;
KEY_SECRET = keysecret;
BUCKET_NAME = bucketname;
}
}
4、接口接收file流
public class OssController {
@Autowired
private OssService ossService;
@PostMapping("upload")
public String upload(MultipartFile file){
String rs = ossService.upload(file);
return rs;
}
}
5、上传图片并返回图片地址
package com.wagn.oss.service.impl;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.wagn.oss.service.OssService;
import com.wagn.oss.utils.ReadUtil;
import org.joda.time.DateTime;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.UUID;
@Service
public class OssServiceImpl implements OssService {
@Override
public String upload(MultipartFile file) {
String endpoint = ReadUtil.END_POINT;
String accessKeyId = ReadUtil.KEY_ID;
String accessKeySecret = ReadUtil.KEY_SECRET;
String buketName = ReadUtil.BUCKET_NAME;
try{
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件流。
InputStream inputStream = file.getInputStream();
String objName = file.getOriginalFilename();
objName = UUID.randomUUID().toString().replaceAll("-","")+objName;
objName = new DateTime().toString("yyyy/MM/dd/")+objName;
ossClient.putObject(buketName, objName, inputStream);
// 关闭OSSClient。
ossClient.shutdown();
String url;
url = "https://"+buketName+"."+endpoint+"/"+objName;
return url;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
}