一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenHarmony應(yīng)用程序集成AGC云存儲(chǔ)

ITMING ? 來(lái)源:ITMING ? 作者:ITMING ? 2023-02-27 16:27 ? 次閱讀

前言

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

1 環(huán)境

  • [DevEco Studio 3.1 Beta1(V3.1.0.200)
  • [觸覺智能IDO-EVB3568-V1開發(fā)板
  • [自定義teui組件庫(kù)
  • [端云協(xié)同開發(fā)應(yīng)用創(chuàng)建(包括云函數(shù))
  • [端云協(xié)同開發(fā)云數(shù)據(jù)庫(kù)

2 云存儲(chǔ)

云存儲(chǔ)隸屬于AGC平臺(tái)的構(gòu)建應(yīng)用基礎(chǔ)能力大類,其是一款可伸縮、免維護(hù)的云端存儲(chǔ)服務(wù),可用于存儲(chǔ)圖片、音頻、視頻或其他由用戶生成的內(nèi)容。相較于傳統(tǒng)的單體或微服務(wù)架構(gòu),Serverless架構(gòu)可以讓開發(fā)者聚焦于業(yè)務(wù)能力的實(shí)現(xiàn),如使用云存儲(chǔ)服務(wù),則無(wú)需關(guān)心存儲(chǔ)服務(wù)器的開發(fā)、部署、運(yùn)維、擴(kuò)容等事務(wù)。云存儲(chǔ)提供了客戶端和服務(wù)端SDK,開發(fā)者可以通過(guò)使用云存儲(chǔ)SDK為已有或現(xiàn)有應(yīng)用實(shí)現(xiàn)安全可靠的文件上傳和下載能力。

3 AGC平臺(tái)開通云存儲(chǔ)

首次使用云存儲(chǔ)服務(wù)和云函數(shù)、云數(shù)據(jù)庫(kù)不同之處是需要手動(dòng)開通服務(wù),DevEco Studio端云協(xié)同并未在應(yīng)用創(chuàng)建初對(duì)云存儲(chǔ)進(jìn)行開通,僅引入了云存儲(chǔ)開發(fā)需要的依賴包,在端側(cè)Application應(yīng)用程序entry目錄中的package.json文件中可查看。

3.1 開通服務(wù)

打開AGC控制臺(tái),在“我的項(xiàng)目”列表中,打開端云協(xié)同開發(fā)應(yīng)用創(chuàng)建(包括云函數(shù))](https://ost.51cto.com/posts/21316)文章中創(chuàng)建的“端云一體化開發(fā)體驗(yàn)”項(xiàng)目下的AppCloud端云協(xié)同應(yīng)用,在左側(cè)菜單欄中選擇“Serverless > 云存儲(chǔ)”,進(jìn)入到云存儲(chǔ)頁(yè)面,點(diǎn)擊“立即開通”按鈕開通云存儲(chǔ)服務(wù)。

在開通云存儲(chǔ)界面中輸入存儲(chǔ)實(shí)例名稱,并設(shè)置默認(rèn)數(shù)據(jù)處理位置(該項(xiàng)在創(chuàng)建端云協(xié)同開發(fā)之處就已經(jīng)設(shè)置過(guò),此處可忽略)。存儲(chǔ)實(shí)例名稱需要滿足以下規(guī)則:

  • 名稱以數(shù)字或字母開頭,只能包含英文小寫字母、數(shù)字、"-",且不能以"-"結(jié)尾,長(zhǎng)度不能小于3個(gè)字符,并且不能超過(guò)57個(gè)字符。
  • 名稱不能是IP地址
  • 名稱需要全局唯一,創(chuàng)建后不可修改

輸入存儲(chǔ)實(shí)例名稱后,點(diǎn)擊“下一步”按鈕進(jìn)入默認(rèn)安全策略展示界面,開通時(shí)默認(rèn)安全策略時(shí)無(wú)法修改的,默認(rèn)安全策略將允許經(jīng)過(guò)身份驗(yàn)證的用戶執(zhí)行所有讀寫操作。若需要定制化安全策略,需要開通服務(wù)后,在安全頁(yè)簽中配置安全策略,以便于保護(hù)用戶數(shù)據(jù)。

點(diǎn)擊“完成”按鈕,開通云存儲(chǔ)服務(wù)成功,服務(wù)開通后AGC將會(huì)創(chuàng)建一個(gè)默認(rèn)存儲(chǔ)實(shí)例,默認(rèn)存儲(chǔ)實(shí)例名稱為開發(fā)者開通云存儲(chǔ)服務(wù)時(shí)填寫的實(shí)例名稱+"-五位隨機(jī)數(shù)字字母" 組成。

可以通過(guò)云存儲(chǔ)界面中的“新增文件夾”按鈕創(chuàng)建文件夾,“上傳文件”按鈕進(jìn)行文件上傳。

04 開通云存儲(chǔ)成功.png

3.2 安全策略

云存儲(chǔ)提供的安全策略以簡(jiǎn)介明了的格式,可以通過(guò)授權(quán)的方式,控制用戶對(duì)特定路徑下數(shù)據(jù)的訪問(wèn)。

構(gòu)建安全策略規(guī)則時(shí)需要使用到如下兩種數(shù)據(jù)類型:

  • null 當(dāng)一個(gè)值不存在時(shí),使用null標(biāo)識(shí)
// 表示未登錄則無(wú)權(quán)查看
allow read: if request.auth != null;
  • bool 布爾類型,包含truefalse兩個(gè)值
// 表示任何情況下都可訪問(wèn)
allow read: if true;

云存儲(chǔ)未開發(fā)者提供了模板化的方式來(lái)編寫安全規(guī)則,包含如下內(nèi)容:

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

// 文件細(xì)分規(guī)則配置
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;
  }
]

在云存儲(chǔ)界面中,打開安全頁(yè)簽進(jìn)行配置云存儲(chǔ)安全策略。筆者在云存儲(chǔ)中創(chuàng)建了兩個(gè)文件夾,splash用于存放應(yīng)用程序啟動(dòng)界面顯示圖,此文件夾權(quán)限配置為所有用戶都具有get單個(gè)文件查看權(quán)限,write需要授權(quán)登錄用戶才可以操作。userspace用于存放用戶數(shù)據(jù),因此需要登錄授權(quán)才可訪問(wèn)。

至此,在AGC平臺(tái)的云存儲(chǔ)服務(wù)配置完成,若想了解更深層次的操作,諸如跨域設(shè)置、靜態(tài)CDN加速配置,請(qǐng)?jiān)敿?xì)閱讀官方文檔云存儲(chǔ)文檔。

4 端側(cè)開發(fā)

使用DevEco Studio(以下簡(jiǎn)稱DS)打開之前的AppCloud端云協(xié)同應(yīng)用程序,并打開端側(cè)Application應(yīng)用程序。在端側(cè)DS在創(chuàng)建項(xiàng)目時(shí)已經(jīng)引入了云存儲(chǔ)的SDK,但由于云存儲(chǔ)時(shí)后續(xù)開通的,需要更新entry/resources/rawfile文件下的agconnect-services.json文件,該文件在AGC控制臺(tái)項(xiàng)目設(shè)置頁(yè)簽中自行下載并替換。在OpenHarmony應(yīng)用程序中使用云存儲(chǔ)流程如下:

4.1 初始化存儲(chǔ)示例

筆者使用的是默認(rèn)示例,需要調(diào)用agconnect.cloudstorage初始化默認(rèn)實(shí)例StorageManagement對(duì)象。

// 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 文件所在路徑,此處為云數(shù)據(jù)庫(kù)中字段值
    public static init(context: any, path: string): Promise<string> {
        return new Promise((resolve, reject) => {
            getAGConnect(context);
            const storageManagement = agconnect.cloudStorage();
            ...
        })
    }
}

4.2 創(chuàng)建引用

初始化成功后,通過(guò)調(diào)用StorageManagement.storageReference創(chuàng)建StorageReference對(duì)象的引用,可以通過(guò)文件的引用進(jìn)行上傳文件、獲取文件的下載地址、刪除文件、更新文件元數(shù)據(jù)等操作。

// 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 文件所在路徑,此處為云數(shù)據(jù)庫(kù)中字段值
    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)
            })
        })
    }
}

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

在AGC控制臺(tái)云存儲(chǔ)界面中上傳文件后,調(diào)用StorageManagement.storageReference創(chuàng)建需要下載文件的引用,并通過(guò)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 文件所在路徑,此處為云數(shù)據(jù)庫(kù)中字段值
    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.4 顯示圖片

打開應(yīng)用的Splash啟動(dòng)頁(yè)面,AppCloud啟動(dòng)頁(yè)面的數(shù)據(jù)是從云數(shù)據(jù)庫(kù)獲取到的值,將AGC平臺(tái)云數(shù)據(jù)庫(kù)中狀態(tài)為"1"的數(shù)據(jù)backgroundImg字段值改為splash/splash.jpg,即為使用云存儲(chǔ)獲取數(shù)據(jù)的文件引用。接著在Splash頁(yè)面的aboutToAppear()方法中繼續(xù)完善業(yè)務(wù)代碼。

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

@Entry
@Component
struct Splash {
  ...
  aboutToAppear() {
    // 云數(shù)據(jù)庫(kù)查詢顯示數(shù)據(jù)
    CloudDB.query(getContext(this)).then(ret => {
      if (ret) {
        this.message = JSON.stringify(ret);
        // 查詢?cè)拼鎯?chǔ)中圖片的回顯地址
        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)
        })
      }
    })
  }
}

4.5 運(yùn)行應(yīng)用程序

使用觸覺智能IDO-EVB3568-V1開發(fā)板運(yùn)行應(yīng)用程序,運(yùn)行效果如下圖所示。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • AGC
    AGC
    +關(guān)注

    關(guān)注

    0

    文章

    166

    瀏覽量

    52247
  • 云存儲(chǔ)
    +關(guān)注

    關(guān)注

    7

    文章

    774

    瀏覽量

    46529
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1057

    瀏覽量

    47343
  • 云數(shù)據(jù)庫(kù)

    關(guān)注

    0

    文章

    30

    瀏覽量

    2032
  • OpenHarmony
    +關(guān)注

    關(guān)注

    26

    文章

    3804

    瀏覽量

    17864
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    OpenHarmonyApp啟動(dòng)頁(yè)后記

    通過(guò)DevEco Studio端協(xié)同開發(fā)OpenHarmony/HarmonyOS應(yīng)用程序(以下簡(jiǎn)稱應(yīng)用)集成AppGallery Connect(以下簡(jiǎn)稱
    的頭像 發(fā)表于 03-03 16:43 ?1625次閱讀

    如何在IAP程序實(shí)現(xiàn)對(duì)應(yīng)用程序存儲(chǔ)區(qū)的改寫

    應(yīng)用程序存儲(chǔ)區(qū)執(zhí)行更新過(guò)的軟件。ST在大部分單片機(jī)中集成了IAP程序,用戶不需再自己實(shí)現(xiàn),關(guān)于這種自舉模式,
    發(fā)表于 03-02 06:31

    OpenHarmony應(yīng)用程序包整體說(shuō)明

    用戶應(yīng)用程序泛指運(yùn)行在設(shè)備的操作系統(tǒng)之上,為用戶提供特定服務(wù)的程序,簡(jiǎn)稱“應(yīng)用”。一個(gè)應(yīng)用所對(duì)應(yīng)的軟件包文件,稱為“應(yīng)用程序包”。 OpenHarmony提供了
    發(fā)表于 09-20 15:34

    HarmonyOS/OpenHarmony原生應(yīng)用開發(fā)-華為Serverless服務(wù)支持情況(四)

    文檔中的TS作者認(rèn)為就是ArkTS之意。 一、存儲(chǔ) AppGallery Connect(簡(jiǎn)稱AGC存儲(chǔ)是一種可伸縮、免維護(hù)的云端
    發(fā)表于 10-16 14:20

    混合如何實(shí)現(xiàn)應(yīng)用程序集成任務(wù)

    混合云集成中最大的錯(cuò)誤是過(guò)度專業(yè)化。組織應(yīng)該在整個(gè)混合云中建立一個(gè)通用的網(wǎng)絡(luò)連接模型,然后定義一個(gè)標(biāo)準(zhǔn)化的托管模型來(lái)部署應(yīng)用程序/組件。連接模型問(wèn)題只能通過(guò)創(chuàng)建可以承載所有應(yīng)用程序和組件的虛擬專用網(wǎng)
    發(fā)表于 11-13 09:38 ?1278次閱讀

    哪些閃存作為存儲(chǔ)提供和使用案例

    公共平臺(tái)上的存儲(chǔ)同樣是如此,這些平臺(tái)具有基于固態(tài)的存儲(chǔ)產(chǎn)品,可為需要存儲(chǔ)功能的應(yīng)用程序提高性能和吞吐量。
    發(fā)表于 10-06 14:37 ?3161次閱讀

    集成混合存儲(chǔ)在企業(yè)中存在什么意義

    企業(yè)混合存儲(chǔ)發(fā)展的下一階段需要將計(jì)算服務(wù)鏈接到現(xiàn)有應(yīng)用程序,以提供本地基礎(chǔ)設(shè)施的擴(kuò)展。
    發(fā)表于 03-22 17:30 ?434次閱讀

    安全的存儲(chǔ)怎樣去實(shí)現(xiàn)

    如果企業(yè)在任何計(jì)算應(yīng)用程序存儲(chǔ)文件,則需要安全的存儲(chǔ)。
    發(fā)表于 03-27 11:48 ?707次閱讀

    集成混合存儲(chǔ)在企業(yè)有什么意義

    諸如備份和長(zhǎng)期歸檔之類的應(yīng)用程序可以將原有的磁帶庫(kù)和異地租賃保管庫(kù)替換為AWS Glacier或Google Cloud Coldline之類的計(jì)算冷存儲(chǔ)服務(wù),從而迅速獲得收益。
    發(fā)表于 04-23 09:49 ?554次閱讀

    不同應(yīng)用程序存儲(chǔ)IO類型解析

    存儲(chǔ)系統(tǒng)作為數(shù)據(jù)的載體,為前端的服務(wù)器和應(yīng)用程序提供讀寫服務(wù)。存儲(chǔ)陣列某種意義上來(lái)說(shuō),是對(duì)應(yīng)用服務(wù)器提供數(shù)據(jù)服務(wù)的后端服務(wù)器。應(yīng)用服務(wù)器對(duì)存儲(chǔ)系統(tǒng)發(fā)送數(shù)據(jù)的讀和寫的請(qǐng)求。然而,不同的
    的頭像 發(fā)表于 11-30 15:21 ?2405次閱讀
    不同<b class='flag-5'>應(yīng)用程序</b>的<b class='flag-5'>存儲(chǔ)</b>IO類型解析

    淺析數(shù)字AGC的matlab仿真程序

    AGC的浮點(diǎn)仿真程序來(lái)了!文末還給出參考資料的列表,建議大家去知網(wǎng)下載。這些資料可以幫助大家完善AGC的理論! %%%%%% AGC性能之測(cè)試程序
    的頭像 發(fā)表于 06-29 17:01 ?4172次閱讀

    OH 應(yīng)用程序集成 AGC 認(rèn)證服務(wù)實(shí)現(xiàn)郵箱登錄

    AGC一站式服務(wù)可以集成到Android、IOS、Web、小程序、HarmonyOS/OpenHarmony應(yīng)用中,如傳統(tǒng)開發(fā)登錄認(rèn)證服務(wù)在集成
    的頭像 發(fā)表于 11-22 17:53 ?1251次閱讀
    OH <b class='flag-5'>應(yīng)用程序</b><b class='flag-5'>集成</b> <b class='flag-5'>AGC</b> 認(rèn)證服務(wù)實(shí)現(xiàn)郵箱登錄

    恒訊科技分析:為什么選擇存儲(chǔ)存儲(chǔ)類型有哪些?

    存儲(chǔ)是任何現(xiàn)代企業(yè)的重要組成部分。無(wú)論是應(yīng)用程序的數(shù)據(jù)庫(kù)還是保護(hù)客戶的個(gè)人詳細(xì)信息,我們都需要一個(gè)安全高效地滿足企業(yè)獨(dú)特?cái)?shù)字需求的存儲(chǔ)解決方案。隨著企業(yè)使用
    的頭像 發(fā)表于 05-24 16:24 ?862次閱讀

    基于OpenHarmony編寫GPIO平臺(tái)驅(qū)動(dòng)和應(yīng)用程序

    程序是基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)編寫的基礎(chǔ)外設(shè)類:GPIO驅(qū)動(dòng)。
    的頭像 發(fā)表于 09-12 10:04 ?1124次閱讀
    基于<b class='flag-5'>OpenHarmony</b>編寫GPIO平臺(tái)驅(qū)動(dòng)和<b class='flag-5'>應(yīng)用程序</b>

    使用SDAccel開發(fā)計(jì)算存儲(chǔ)應(yīng)用程序

    電子發(fā)燒友網(wǎng)站提供《使用SDAccel開發(fā)計(jì)算存儲(chǔ)應(yīng)用程序.pdf》資料免費(fèi)下載
    發(fā)表于 09-18 10:18 ?0次下載
    使用SDAccel開發(fā)計(jì)算<b class='flag-5'>存儲(chǔ)</b><b class='flag-5'>應(yīng)用程序</b>