OSS物件儲存
阿新 • • 發佈:2020-09-12
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; } } }