1.引入cdn所需的maven文件;
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.8.0</version>
</dependency>
2.定义配置文件
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "oss")
public class OSSConfig {
private String endPoint;
private String accessKey;
private String accessSecret;
private String bucketName;
private String domain;
public String getEndPoint() {
return endPoint;
}
public void setEndPoint(String endPoint) {
this.endPoint = endPoint;
}
public String getAccessKey() {
return accessKey;
}
public void setAccessKey(String accessKey) {
this.accessKey = accessKey;
}
public String getAccessSecret() {
return accessSecret;
}
public void setAccessSecret(String accessSecret) {
this.accessSecret = accessSecret;
}
public String getBucketName() {
return bucketName;
}
public void setBucketName(String bucketName) {
this.bucketName = bucketName;
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
}
springboot配置文件:
oss:
endPoint: xxxxxxxx
accessKey: xxxxxxxx
accessSecret: xxxxxxx
bucketName: xxxxxx
domain: xxxxxx
3.上传文件方法
@RestController
@RequestMapping(value = "/oss")
public class DemoController {
private OSSService ossService;
public DemoController(OSSService ossService) { this.ossService = ossService; }
@PostMapping(value = "/upload")
public String uploadDemo(@RequestParam("file") MultipartFile file) throws IOException {
return this.ossService.upload("test", file);
}
}
/**
* 上传文件
*/
@Service
public class OSSService {
private OSSConfig config;
public OSSService(OSSConfig config) { this.config = config; }
/**
* 同步上传
* @param objectPath 模块名
* @param file 文件对象
* @return url
*/
public String upload(String objectPath, MultipartFile file) throws IOException {
OSS client = new OSSClientBuilder().build(this.config.getEndPoint(), this.config.getAccessKey(), this.config.getAccessSecret());
String filename = UUID.randomUUID().toString().replaceAll("-","") + Objects.requireNonNull(file.getOriginalFilename()).substring(file.getOriginalFilename().lastIndexOf("."));
PutObjectRequest request = new PutObjectRequest(this.config.getBucketName(), objectPath + "/" + filename, new ByteArrayInputStream(file.getBytes()));
client.putObject(request);
client.shutdown();
return this.config.getDomain() + "/" + objectPath + "/" + filename;
}
/**
* @desc 图片上传
* @param picture
* @param file
* @return com.yunling.common.core.domain.AjaxResult
*/
@PostMapping(value = "/uploadFile")
@ResponseBody
public AjaxResult uploadFile(GoodsPicture picture,@RequestParam("file") MultipartFile file) throws IOException {
String url=ossService.upload("goods", file);
if (StringUtils.isNotEmpty(picture.getId())){
picture.setUrl(url);
goodsPictureService.updateGoodsPicture(picture);
} else {
GoodsInfo goodsInfo=goodsInfoService.selectGoodsInfoById(picture.getGoodsId());
goodsInfo.setGoodsPic(url);
goodsInfoService.updateGoodsInfo(goodsInfo);
}
return AjaxResult.success("操作成功",url);
}