阿里云OSS介绍
阿里云官网地址
进入管理控制台
创建Bucket
进入AccessKey,创建AccessKey
也可以参考文档
阿里云参考文档
导入依赖
<!--springboot工程需要继承的父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
</parent>
<dependencies>
<!--web开发的起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- 数据类型处理包-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
<!-- 日期处理包-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
aliyun.properties配置文件
endpoint
accessKeyId,accessKeySecret
bucketName
urlPrefix
AliyunConfig.class创建bean
@Configuration
@PropertySource("classpath:aliyun.properties")
@Data
public class AliyunConfig {
@Value("${endpoint}")
private String endpoint;
@Value("${accessKeyId}")
private String accessKeyId;
@Value("${accessKeySecret}")
private String accessKeySecret;
@Value("${bucketName}")
private String bucketName;
@Value("${urlPrefix}")
private String urlPrefix;
@Bean
public OSS oss(){
// return new OSSClient(endpoint,accessKeyId,accessKeySecret); //被抛弃的,仍可以使用
return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
}
}
UploadService.class 数据存储
@Service
public class UploadService {
// @Autowired
// private OSSClient ossClient;
@Autowired
private OSS oss;
@Autowired
private AliyunConfig aliyunConfig;
public String upload(MultipartFile file) throws IOException {
//文件路径
String path=getFilepath(file.getOriginalFilename());
PutObjectResult putObjectResult = oss.putObject(aliyunConfig.getBucketName(), path, new ByteArrayInputStream(file.getBytes()));
System.out.println(putObjectResult);
return aliyunConfig.getUrlPrefix()+path;
}
private String getFilepath(String sourceFileName){
DateTime dateTime = new DateTime();
return "images/"+dateTime.toString("yyyy")+"/"+
dateTime.toString("MM")+"/"+dateTime.toString("dd")+"/"+
System.currentTimeMillis()+ RandomUtils.nextInt(100,9999)+"."+
StringUtils.substringAfter(sourceFileName,".");
}
}
AliTest controller层
@RestController
@ResponseBody
public class AliTest {
@Autowired
private UploadService uploadService;
@GetMapping("/upload")
public String upload(MultipartFile file) throws IOException {
String upload = uploadService.upload(file);
return upload;
}
}
测试
采用postman进行测试
访问地址是aliyun.properties中的urlPrefix加上文件路径