1.引入cdn所需的maven文件;
com.aliyun.oss aliyun-sdk-oss 3.8.0
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: xxxxxxxxaccessKey: xxxxxxxxaccessSecret: xxxxxxxbucketName: xxxxxxdomain: 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);
}