谷粒学院之阿里云oss存储模块
生活随笔
收集整理的這篇文章主要介紹了
谷粒学院之阿里云oss存储模块
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
子模塊service_oss
阿里云上注冊,然后開通oss對象存儲,充一點錢
1.創建bucket
?
?
2.上傳文件到阿里云oss
第一步創建許可證AccessKey,
AccessKey ID 和 AccessKey Secret 是訪問阿里云 API 的密鑰,具有該賬戶完全的權限。
然后通過手機號驗證查看并保存id和秘鑰。
第二步引入依賴
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.1.0</version> </dependency><!-- 日期工具欄依賴 --><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId> </dependency>日期依賴是為了之后將上傳的圖片進行文件通過日期分類。
第三步在配置文件里設置id和秘鑰,用于之后的讀取
#測試oss存儲 #阿里云 OSS #不同的服務器,地址不同 aliyun.oss.file.endpoint=oss-cn-beijing.aliyuncs.com aliyun.oss.file.keyid=LTAI5t7dFYm7w6KJE79dVgXq aliyun.oss.file.keysecret=UZCtXo4EJ5hcQ8vQD75LO59CeIXySh #bucket可以在控制臺創建,也可以使用java代碼創建(這里是已經在oss控制臺創建好的) aliyun.oss.file.bucketname=test-000821注意一個地方:
如果將這個功能單獨寫成一個模塊需要在啟動類上加上
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//屬性表示不去加載數據庫第四步編寫一個工具類來讀取上述的值
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;//實現這個接口的作用是當項目已啟動,spring加載之后會執行接口的一個方法,也就是下面重寫的那個方法 @Component public class ConstantPropertiesUtils implements InitializingBean {//常量類,讀取配置文件的內容賦值給自己定義的變量,@Value這個注解用來讀取配置文件的值@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 ACCESS_KEY_ID;public static String ACCESS_KEY_SECRET;public static String BUCKET_NAME;//繼承的接口會執行這個方法@Overridepublic void afterPropertiesSet() throws Exception {END_POINT = endpoint;ACCESS_KEY_ID = keyId;ACCESS_KEY_SECRET = keySecret;BUCKET_NAME = bucketName;} }第五步編寫controller,service以及serviceimpl
@RestController @CrossOrigin public class OssController {@Autowiredprivate OssService ossService;@PostMapping("upload")public String uploadFile(MultipartFile file) {String url = ossService.uploadFile(file);return url;} } public interface OssService {//上傳文件到ossString uploadFile(MultipartFile file); }文件名和文件夾以日期格式都可以不改
@Service public class OssServiceImpl implements OssService{//上傳文件到oss@Overridepublic String uploadFile(MultipartFile file) {// yourEndpoint填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。String endpoint = ConstantPropertiesUtils.END_POINT;String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;String bucketName = ConstantPropertiesUtils.BUCKET_NAME;try {// 創建OSSClient實例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 獲取上傳文件的輸入流InputStream inputStream = file.getInputStream();//獲取文件名稱String fileName = file.getOriginalFilename();//1.在文件名稱里添加隨機的唯一的值,避免出現文件同名覆蓋問題String uuid = UUID.randomUUID().toString().replaceAll("-","");//變成UUIDxxx.jpg這種形式fileName = uuid + fileName;//2.把文件按照日期分類// 20xx/xx/xx/xx.jpg 年月日加日期//獲取當前日期String datapath = new DateTime().toString("yyyy/MM/dd");//拼接fileName = datapath + "/" + fileName;//調用oss的方法實現上傳//第一個參數bucketname//第二個參數 文件路徑和文件名稱,獲取文件名稱//第三個參數 文件輸入流ossClient.putObject(bucketName, fileName, inputStream);// 關閉OSSClient。ossClient.shutdown();//把上傳之后文件的路徑返回//沒有特定的方法,需要自己拼接得到路徑//示例https://edu-0821.oss-cn-beijing.aliyuncs.com/01.jpgString url = "https://"+bucketName+"."+endpoint+"/"+fileName;return url;} catch (Exception e) {e.printStackTrace();}return null;} }總結
以上是生活随笔為你收集整理的谷粒学院之阿里云oss存储模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决vue项目中重复点击导航路由报错
- 下一篇: 炫酷的表白烟花 html+css+js实