摘要:添加快速集成的對象存儲服務(wù),提供常用的文件操作方法,當(dāng)然也提供自定義擴(kuò)展,以致于滿足絕大數(shù)業(yè)務(wù)場景,并且通過擴(kuò)展可以實現(xiàn)上傳文件進(jìn)度條下載文件進(jìn)度條存儲空間操作靜態(tài)網(wǎng)站托管訪問日志防盜鏈分片上傳追加上傳斷點續(xù)傳等等。
ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動化完成配置,讓接口開發(fā)者可以選著性完成開箱即用, 不再為搭建接口框架而犯愁,從而極大的提高開發(fā)效率。
ApiBoot添加快速集成Aliyun的對象存儲服務(wù)Oss,提供常用的文件操作方法,當(dāng)然也提供自定義擴(kuò)展,以致于滿足絕大數(shù)業(yè)務(wù)場景,并且通過擴(kuò)展可以實現(xiàn)上傳文件進(jìn)度條、下載文件進(jìn)度條、存儲空間操作、靜態(tài)網(wǎng)站托管、訪問日志、防盜鏈、分片上傳、追加上傳、斷點續(xù)傳等等。
引入ApiBoot Alibaba Oss在pom.xml配置文件內(nèi)添加依賴,如下所示:
org.minbox.framework api-boot-starter-alibaba-oss
ApiBoot所提供的依賴都不需要添加版本號,具體查看ApiBoot版本依賴
配置參數(shù)列表配置參數(shù) | 參數(shù)介紹 | 默認(rèn)值 | 是否必填 |
---|---|---|---|
api.boot.oss.region | oss所屬地域 | 空 | 是 |
api.boot.oss.bucket-name | oss存儲空間名稱 | 空 | 是 |
api.boot.oss.access-key-id | 阿里云賬戶accessKeyId | 空 | 是 |
api.boot.oss.access-key-secret | 阿里云賬戶accessKeySecret | 空 | 是 |
api.boot.oss.domain | oss存儲空間所綁定的自定義域名,如果不配置,上傳文件成功后返回默認(rèn)格式化的文件訪問路徑 | 空 | 否 |
在使用ApiBoot Oss時,只需要注入ApiBootOssService類就可以完成默認(rèn)方法的使用,如下所示:
@Autowired private ApiBootOssService apiBootOssService;流上傳
/** * 流方式上傳 */ @Test public void uploadBytes() { ApiBootObjectStorageResponse response = apiBootOssService.upload("admin.txt", "admin".getBytes()); logger.info("文件名稱:{}", response.getObjectName()); logger.info("文件訪問路徑:{}", response.getObjectUrl()); }本地文件上傳
/** * 本地文件上傳 */ @Test public void uploadFile() { ApiBootObjectStorageResponse response = apiBootOssService.upload("logo.png", "/Users/yuqiyu/Downloads/logo.png"); logger.info("文件名稱:{}", response.getObjectName()); logger.info("文件訪問路徑:{}", response.getObjectUrl()); }文件流上傳
/** * 文件流方式上傳 * * @throws Exception */ @Test public void uploadInputStream() throws Exception { FileInputStream inputStream = new FileInputStream(new File("/Users/yuqiyu/Downloads/logo.png")); ApiBootObjectStorageResponse response = apiBootOssService.upload("測試.png", inputStream); logger.info("文件名稱:{}", response.getObjectName()); logger.info("文件訪問路徑:{}", response.getObjectUrl()); }
通過文件的輸入流完成對象存儲文件的上傳下載文件
/** * 下載文件 */ @Test public void download() { apiBootOssOverrideService.download("測試.png", "/Users/yuqiyu/Downloads/測試.png"); }
在上面的示例中,文件會自動下載到/Users/yuqiyu/Downloads/目錄下,文件名稱為測試.png。刪除文件
/** * 刪除文件示例 */ @Test public void delete() { apiBootOssOverrideService.delete("測試.png"); }
刪除對象存儲空間內(nèi)的文件時只需要傳遞文件名即可。MultipartFile 上傳文件
如果你是通過SpringMvc提供的MultipartFile對象進(jìn)行上傳文件,可以通過如下示例進(jìn)行上傳:
MultipartFile multipartFile = ..; // 流方式上傳 ApiBootObjectStorageResponse responseByte = apiBootOssService.upload("測試.png", multipartFile.getBytes()); // 文件輸入流方式上傳 ApiBootObjectStorageResponse responseIs = apiBootOssService.upload("測試.png", multipartFile.getInputStream());自定義擴(kuò)展
ApiBoot Alibaba Oss提供的方法畢竟是有限的,因此ApiBoot提供了自定義的擴(kuò)展方式,讓使用者可以根據(jù)Oss官方文檔進(jìn)行擴(kuò)展,包含上傳文件進(jìn)度條、下載文件進(jìn)度條、存儲空間操作、靜態(tài)網(wǎng)站托管、訪問日志、防盜鏈、分片上傳、追加上傳、斷點續(xù)傳等等。
自定義擴(kuò)展首先需要創(chuàng)建類并繼承ApiBootOssService,如下所示:
//... public class ApiBootOssOverrideService extends ApiBootOssService { /** * logger instance */ static Logger logger = LoggerFactory.getLogger(ApiBootOssOverrideService.class); /** * 實現(xiàn)父類構(gòu)造函數(shù) * * @param endpoint 外網(wǎng)節(jié)點 * @param bucketName 存儲空間名稱 * @param accessKeyId 阿里云賬號授權(quán)Id * @param accessKeySecret 阿里云賬號授權(quán)Secret * @param domain 自定義域名 */ public ApiBootOssOverrideService(String endpoint, String bucketName, String accessKeyId, String accessKeySecret, String domain) { super(endpoint, bucketName, accessKeyId, accessKeySecret, domain); } /** * 創(chuàng)建bucket存儲 * * @param bucketName 存儲名稱 */ public void createBucket(String bucketName) { OSSClient ossClient = getOssClient(); Bucket bucket = ossClient.createBucket(bucketName); logger.info("新創(chuàng)建存儲空間名稱:{}", bucket.getName()); logger.info("新創(chuàng)建存儲空間所屬人:{}", bucket.getOwner().getDisplayName()); closeOssClient(ossClient); } }
如上createBucket方法所示ApiBootOssService內(nèi)部提供了獲取OssClient以及關(guān)閉OssClient連接的方法,可以直接調(diào)用。
擴(kuò)展生效
我們自定義的擴(kuò)展,需要將實例放入SpringIOC容器內(nèi),方便我們在使用處進(jìn)行注入,要注意,由于構(gòu)造函數(shù)參數(shù)的原因,無法直接通過@Service或者@Component注解進(jìn)行標(biāo)注,需要通過如下方式:
//... @Bean @ConditionalOnMissingBean ApiBootOssOverrideService apiBootOssOverrideService(ApiBootOssProperties apiBootOssProperties) { return new ApiBootOssOverrideService(apiBootOssProperties.getRegion().getEndpoint(), apiBootOssProperties.getBucketName(), apiBootOssProperties.getAccessKeyId(), apiBootOssProperties.getAccessKeySecret(), apiBootOssProperties.getDomain()); }
ApiBootOssProperties屬性配置類,是ApiBoot內(nèi)置的,可以在任意地方進(jìn)行注入,這里目的只是為了拿到相關(guān)配置進(jìn)行構(gòu)造參數(shù)實例化使用。
本章源碼地址:https://github.com/hengboy/api-boot/tree/master/api-boot-samples/api-boot-sample-alibaba-oss
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74056.html
摘要:的短信服務(wù)模塊是由阿里云的國際短信服務(wù)提供的,支持國內(nèi)和國際快速發(fā)送驗證碼短信通知和推廣短信。前提需要到阿里云控制臺申請開通短信服務(wù)。如果在阿里云控制臺定義的短信模板存在多個參數(shù),可以通過方法來進(jìn)行挨個添加,該方法返回值為本對象。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動化完成配置,讓接...
摘要:是一款基于的接口服務(wù)集成基礎(chǔ)框架,內(nèi)部提供了框架的封裝集成,讓接口開發(fā)者完成開箱即用,不再為搭建接口框架而犯愁,從而極大的提高開發(fā)效率。 ApiBoot是一款基于SpringBoot1.x、SpringBoot2.x的接口服務(wù)集成基礎(chǔ)框架,內(nèi)部提供了框架的封裝集成,讓接口開發(fā)者完成開箱即用,不再為搭建接口框架而犯愁,從而極大的提高開發(fā)效率。通過在我的SpringBoot系列教程中得到的...
摘要:注意如果你的方法返回對象只有一個資源對象需要映射,可以單獨配置使用注解。集合資源加載返回值為集合的示例類型作為返回值時,其中注意必須是對象類型。如果你有想要的使用方式,你就可以提交 ApiBoot Resource Load ApiBoot Resource Load是一款資源與業(yè)務(wù)完全分離的基礎(chǔ)框架,可以整合微服務(wù)(Feign、OpenFeign)進(jìn)行負(fù)載均衡讀取固定類型、固定所屬業(yè)...
摘要:相關(guān)配置配置參數(shù)參數(shù)介紹默認(rèn)值是否啟用文檔標(biāo)題快速集成文檔文檔描述通過自動化配置快速集成文檔,僅需一個注解一個依賴即可。注意通過所獲取的類型都為。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動化完成配置,讓接口開發(fā)者可以選著性完成開箱即用, 不再為搭建接口框架而犯愁,從而極大...
摘要:如果全部使用默認(rèn)值的情況話不需要做任何配置方式前提項目需要添加數(shù)據(jù)源依賴。獲取通過獲取啟用在使用格式化時非常簡單的,配置如下所示開啟轉(zhuǎn)換轉(zhuǎn)換時所需加密,默認(rèn)為恒宇少年于起宇默認(rèn)不啟用,簽名建議進(jìn)行更換。 ApiBoot是一款基于SpringBoot1.x,2.x的接口服務(wù)集成基礎(chǔ)框架, 內(nèi)部提供了框架的封裝集成、使用擴(kuò)展、自動化完成配置,讓接口開發(fā)者可以選著性完成開箱即...
閱讀 969·2023-04-25 23:55
閱讀 2690·2023-04-25 14:13
閱讀 3285·2019-08-26 13:47
閱讀 2956·2019-08-23 18:16
閱讀 615·2019-08-23 17:20
閱讀 3216·2019-08-23 16:55
閱讀 3134·2019-08-22 15:39
閱讀 3183·2019-08-20 18:10