成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

DevEco Studio端云協同開發之云存儲

云計算 OpenHarmony
本次分享在OpenHarmony中使用AGC的云存儲服務。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

前言

在之前的文章中筆者分享了在OpenHarmony應用程序中集成AppGallery Connect(AGC)五大類體系服務中構建應用基礎能力的認證服務、云函數、云數據庫,這些能力的應用都能夠提升應用程序的快速迭代及上線。本次分享在OpenHarmony中使用AGC的云存儲服務。

1、環境

2、云存儲

云存儲隸屬于AGC平臺的構建應用基礎能力大類,其是一款可伸縮、免維護的云端存儲服務,可用于存儲圖片、音頻、視頻或其他由用戶生成的內容。相較于傳統的單體或微服務架構,Serverless架構可以讓開發者聚焦于業務能力的實現,如使用云存儲服務,則無需關心存儲服務器的開發、部署、運維、擴容等事務。云存儲提供了客戶端和服務端SDK,開發者可以通過使用云存儲SDK為已有或現有應用實現安全可靠的文件上傳和下載能力。

3、AGC平臺開通云存儲

首次使用云存儲服務和云函數、云數據庫不同之處是需要手動開通服務,DevEco Studio端云協同并未在應用創建初對云存儲進行開通,僅引入了云存儲開發需要的依賴包,在端側Application應用程序??entry??目錄中的??package.json??文件中可查看。

#創作者激勵#DevEco Studio端云協同開發之云存儲-開源基礎軟件社區

(1)開通服務

打開AGC控制臺,在“我的項目”列表中,打開??端云協同開發應用創建(包括云函數)??文章中創建的“端云一體化開發體驗”項目下的AppCloud端云協同應用,在左側菜單欄中選擇“Serverless > 云存儲”,進入到云存儲頁面,點擊“立即開通”按鈕開通云存儲服務。

#創作者激勵#DevEco Studio端云協同開發之云存儲-開源基礎軟件社區

在開通云存儲界面中輸入存儲實例名稱,并設置默認數據處理位置(該項在創建端云協同開發之處就已經設置過,此處可忽略)。存儲實例名稱需要滿足以下規則:

  • 名稱以數字或字母開頭,只能包含英文小寫字母、數字、“-”,且不能以"-"結尾,長度不能小于3個字符,并且不能超過57個字符。
  • 名稱不能是IP地址
  • 名稱需要全局唯一,創建后不可修改

#創作者激勵#DevEco Studio端云協同開發之云存儲-開源基礎軟件社區

輸入存儲實例名稱后,點擊“下一步”按鈕進入默認安全策略展示界面,開通時默認安全策略時無法修改的,默認安全策略將允許經過身份驗證的用戶執行所有讀寫操作。若需要定制化安全策略,需要開通服務后,在安全頁簽中配置安全策略,以便于保護用戶數據。

#創作者激勵#DevEco Studio端云協同開發之云存儲-開源基礎軟件社區

點擊“完成”按鈕,開通云存儲服務成功,服務開通后AGC將會創建一個默認存儲實例,默認存儲實例名稱為開發者開通云存儲服務時填寫的實例名稱+“-五位隨機數字字母” 組成。

可以通過云存儲界面中的“新增文件夾”按鈕創建文件夾,“上傳文件”按鈕進行文件上傳。

#創作者激勵#DevEco Studio端云協同開發之云存儲-開源基礎軟件社區

(2)安全策略

云存儲提供的安全策略以簡介明了的格式,可以通過授權的方式,控制用戶對特定路徑下數據的訪問。

構建安全策略規則時需要使用到如下兩種數據類型:

  • null 當一個值不存在時,使用null標識。
// 表示未登錄則無權查看
allow read: if request.auth != null;
  • bool 布爾類型,包含true和false兩個值。
// 表示任何情況下都可訪問
allow read: if true;

云存儲未開發者提供了模板化的方式來編寫安全規則,包含如下內容:

  • match 用于識別存儲實例下的文件路徑,也可以使用通配符指向特定路徑下的任意文件。
  • allow 用于在滿足指定條件下用戶擁有對該文件路徑的read和write權限。
  • read 讀權限,可以細分為get和list權限,在設置時可以根據業務需要進行單個文件讀取設置,且拒絕大量的查詢。
  • write 寫權限,可以細分為create、update和delete權限,在設置時可以根據業務需要僅新增,不可更新和刪除。
// 表示實例中文件全部允許讀寫
agc.cloud.storage [
match: /{bucket}/{path=**} {
allow read, write: if true;
}
]
// 表示實例中文件全部不允許讀寫
agc.cloud.storage [
match: /{bucket}/{path=**} {
allow read, write: if false;
}
]

// 文件細分規則配置
agc.cloud.storage [
// 匹配splash路徑下的splash.jpg文件
match: /{bucket}/splash/spalsh.jpg {
allow get: if true;
allow list: if false; // 不支持列表查詢
allow write: if request.auth != null
}

// 匹配splash路徑下任意文件
match: /{bucket}/splash/{path=**} {
allow read, write: if true;
}
]

在云存儲界面中,打開安全頁簽進行配置云存儲安全策略。筆者在云存儲中創建了兩個文件夾,splash用于存放應用程序啟動界面顯示圖,此文件夾權限配置為所有用戶都具有get單個文件查看權限,write需要授權登錄用戶才可以操作。userspace用于存放用戶數據,因此需要登錄授權才可訪問。

#創作者激勵#DevEco Studio端云協同開發之云存儲-開源基礎軟件社區

至此,在AGC平臺的云存儲服務配置完成,若想了解更深層次的操作,諸如跨域設置、靜態CDN加速配置,請詳細閱讀官方文檔-??云存儲文檔??。

4、端側開發

使用DevEco Studio(以下簡稱DS)打開之前的AppCloud端云協同應用程序,并打開端側Application應用程序。在端側DS在創建項目時已經引入了云存儲的SDK,但由于云存儲時后續開通的,需要更新entry/resources/rawfile文件下的agconnect-services.json文件,該文件在AGC控制臺項目設置頁簽中自行下載并替換。在OpenHarmony應用程序中使用云存儲流程如下:

#創作者激勵#DevEco Studio端云協同開發之云存儲-開源基礎軟件社區

(1)初始化存儲示例

筆者使用的是默認示例,需要調用agconnect.cloudstorage初始化默認實例StorageManagement對象。

// entry/src/main/ets/service/cloudstorage/CloudStorgaeService.ts
import agconnect from '@hw-agconnect/api-ohos';
import "@hw-agconnect/cloudstorage-ohos";

import { getAGConnect } from '../AgcConfig';

export class CloudStorageService {

// context 上下文;path 文件所在路徑,此處為云數據庫中字段值
public static init(context: any, path: string): Promise<string> {
return new Promise((resolve, reject) => {
getAGConnect(context);
const storageManagement = agconnect.cloudStorage();
...
})
}
}

(2)創建引用

初始化成功后,通過調用StorageManagement.storageReference創建StorageReference對象的引用,可以通過文件的引用進行上傳文件、獲取文件的下載地址、刪除文件、更新文件元數據等操作。

// entry/src/main/ets/service/cloudstorage/CloudStorgaeService.ts
import agconnect from '@hw-agconnect/api-ohos';
import "@hw-agconnect/cloudstorage-ohos";

import { getAGConnect } from '../AgcConfig';

export class CloudStorageService {

// context 上下文;path 文件所在路徑,此處為云數據庫中字段值
public static init(context: any, path: string): Promise<string> {
return new Promise((resolve, reject) => {
getAGConnect(context);
const storageManagement = agconnect.cloudStorage();
storageManagement.storageReference().then((ret) => {
...
}).catch((err) => {
reject(err)
})
})
}
}

(3)獲取文件回顯(下載)地址

在AGC控制臺云存儲界面中上傳文件后,調用StorageManagement.storageReference創建需要下載文件的引用,并通過StorageReference.getDownloadURL獲取下載(回顯)地址。

// entry/src/main/ets/service/cloudstorage/CloudStorgaeService.ts
import agconnect from '@hw-agconnect/api-ohos';
import "@hw-agconnect/cloudstorage-ohos";

import { getAGConnect } from '../AgcConfig';

export class CloudStorageService {

// context 上下文;path 文件所在路徑,此處為云數據庫中字段值
public static init(context: any, path: string): Promise<string> {
return new Promise((resolve, reject) => {
getAGConnect(context);
const storageManagement = agconnect.cloudStorage();
storageManagement.storageReference().then((ret) => {
ret.child(path).getDownloadURL().then((res) => {
resolve(res)
}).catch((err) => {
reject(err);
})
}).catch((err) => {
reject(err)
})
})
}
}

(4)顯示圖片

打開應用的Splash啟動頁面,AppCloud啟動頁面的數據是從云數據庫獲取到的值,將AGC平臺云數據庫中狀態為"1"的數據backgroundImg字段值改為splash/splash.jpg,即為使用云存儲獲取數據的文件引用。接著在Splash頁面的aboutToAppear()方法中繼續完善業務代碼。

...
import { CloudStorageService } from '../services/cloudstorage/CloudStorageService';

@Entry
@Component
struct Splash {
...
aboutToAppear() {
// 云數據庫查詢顯示數據
CloudDB.query(getContext(this)).then(ret => {
if (ret) {
this.message = JSON.stringify(ret);
// 查詢云存儲中圖片的回顯地址
CloudStorageService.init(getContext(this), ret.backgroundImg).then(res => {
this.message = JSON.stringify(res);
this.result.backgroundImg = res;
this.isSkip = true;
}).catch((err) => {
this.message = JSON.stringify(err)
})
}
})
}
}

(5)運行應用程序

使用??觸覺智能IDO-EVB3568-V1開發板??運行應用程序,運行效果如下圖所示。

#創作者激勵#DevEco Studio端云協同開發之云存儲-開源基礎軟件社區

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2023-02-23 19:45:23

云數據庫云協同開發

2023-02-20 10:15:00

云協同邊緣

2018-11-13 09:49:11

存儲云存儲云備份

2016-06-12 09:58:46

云計算云存儲

2018-09-07 10:23:46

云備份混合云存儲

2016-09-29 15:08:57

智慧城市

2022-05-08 20:26:45

邊緣計算系統邊協同

2016-01-04 13:32:46

云計算互聯網云存儲

2021-12-31 11:42:42

華為云軟通動力RPA

2020-11-25 10:55:56

云計算

2013-08-08 10:14:52

云存儲云計算

2018-08-14 10:31:18

私有云存儲公有云

2023-06-12 14:49:11

云計算邊緣計算

2021-07-06 11:24:50

可信云

2013-09-10 09:04:41

云計算大數據存儲
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 97视频在线看 | 最新国产精品 | 日韩在线高清 | 成人小视频在线免费观看 | 91一区二区 | 国产亚韩 | 成人免费一区二区三区牛牛 | 九九色综合 | 国产精品久久久久久久久久了 | 日本中文字幕一区 | 色欧美日韩| 久久久久久久久久久福利观看 | 午夜网址 | 欧美精品久久久久 | 亚洲国产精品久久人人爱 | 国产精品久久久久久久午夜片 | 91久久国产精品 | 免费精品国产 | 国产成人一区在线 | 黄视频免费 | 国产成人小视频 | 另类一区| 中文字幕亚洲欧美 | 久久久久久久久中文字幕 | 91麻豆精品国产91久久久久久 | av网站在线播放 | 欧美激情综合 | 狠狠撸在线视频 | 亚洲第一av | 一级毛片免费看 | 久久精品国产一区二区三区不卡 | av高清| 污免费网站 | 桃花av在线 | 毛片黄片免费看 | 中文区中文字幕免费看 | 在线欧美一区 | 久久亚洲一区二区三区四区 | 日韩高清国产一区在线 | a毛片| 欧美4p|