<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenHarmony應用程序集成AGC云存儲

ITMING ? 來源:ITMING ? 作者:ITMING ? 2023-02-27 16:27 ? 次閱讀

前言

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

1 環境

  • [DevEco Studio 3.1 Beta1(V3.1.0.200)
  • [觸覺智能IDO-EVB3568-V1開發板
  • [自定義teui組件庫
  • [端云協同開發應用創建(包括云函數)
  • [端云協同開發云數據庫

2 云存儲

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

3 AGC平臺開通云存儲

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

3.1 開通服務

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

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

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

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

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

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

04 開通云存儲成功.png

3.2 安全策略

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

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

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

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

  • match 用于識別存儲實例下的文件路徑,也可以使用通配符指向特定路徑下的任意文件
  • allow 用于在滿足指定條件下用戶擁有對該文件路徑的readwrite權限
  • read 讀權限,可以細分為getlist權限,在設置時可以根據業務需要進行單個文件讀取設置,且拒絕大量的查詢。
  • write 寫權限,可以細分為create、updatedelete權限,在設置時可以根據業務需要僅新增,不可更新和刪除。
// 表示實例中文件全部允許讀寫
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用于存放用戶數據,因此需要登錄授權才可訪問。

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

4 端側開發

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

4.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();
            ...
        })
    }
}

4.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)
            })
        })
    }
}

4.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.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)
        })
      }
    })
  }
}

4.5 運行應用程序

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

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • AGC
    AGC
    +關注

    關注

    0

    文章

    152

    瀏覽量

    51275
  • 云存儲
    +關注

    關注

    7

    文章

    716

    瀏覽量

    45864
  • SDK
    SDK
    +關注

    關注

    3

    文章

    975

    瀏覽量

    44929
  • 云數據庫
    +關注

    關注

    0

    文章

    15

    瀏覽量

    1873
  • OpenHarmony
    +關注

    關注

    24

    文章

    3442

    瀏覽量

    15294
收藏 人收藏

    評論

    相關推薦

    OpenHarmonyApp啟動頁后記

    通過DevEco Studio端云協同開發OpenHarmony/HarmonyOS應用程序(以下簡稱應用)集成AppGallery Connect(以下簡稱AGC)平臺云函數、云數據
    的頭像 發表于 03-03 16:43 ?1343次閱讀

    架起線上線下存儲橋梁,存儲網關開放性能型文件網關及塊網關公測

    經典應用場景助力用戶精準選擇適用功能:當出現以下三個場景時,您可以選擇文件網關。1.當您需要在本地存儲有限的情況下搭建一個具有大容量的文件存儲服務。2.當您需要將大量文件存儲上,但
    發表于 06-13 16:33

    colorbar和lwipdemo應用程序集成的問題如何解決

    應用程序生成鏈接描述文件,那么它將不再起作用。 Colorbar僅適用于映射到ilmb或SRAM。為什么?或者我應該遵循哪些步驟來集成colorbar和lwipdemo應用程序?或者應該更改什么才能讓colorbar
    發表于 06-12 13:48

    如何在IAP程序實現對應用程序存儲區的改寫

    應用程序存儲區執行更新過的軟件。ST在大部分單片機中集成了IAP程序,用戶不需再自己實現,關于這種自舉模式,
    發表于 03-02 06:31

    OpenHarmony應用程序包整體說明

    用戶應用程序泛指運行在設備的操作系統之上,為用戶提供特定服務的程序,簡稱“應用”。一個應用所對應的軟件包文件,稱為“應用程序包”。 OpenHarmony提供了
    發表于 09-20 15:34

    HarmonyOS/OpenHarmony原生應用開發-華為Serverless服務支持情況(三)

    /agc-clouddb-sdk-version-change-history-openharmony-0000001366886117 三、緩存 沒有說明哪些類型的應用可以使用。但是在開發語言中可以了解。因為在實現開發語言上,沒有ArkTS,是否支持HarmonyOS
    發表于 10-12 14:43

    HarmonyOS/OpenHarmony原生應用開發-華為Serverless服務支持情況(四)

    文檔中的TS作者認為就是ArkTS之意。 一、存儲 AppGallery Connect(簡稱AGC存儲是一種可伸縮、免維護的云端
    發表于 10-16 14:20

    不同應用程序存儲IO類型解析

    存儲系統作為數據的載體,為前端的服務器和應用程序提供讀寫服務。存儲陣列某種意義上來說,是對應用服務器提供數據服務的后端服務器。應用服務器對存儲系統發送數據的讀和寫的請求。然而,不同的
    的頭像 發表于 11-30 15:21 ?2022次閱讀
    不同<b class='flag-5'>應用程序</b>的<b class='flag-5'>存儲</b>IO類型解析

    openharmony開源項目官網

    OpenHarmony 程序框架僅支持 OpenHarmony 用戶應用程序運行,不支持基于安卓 API/SDK 開發的用戶應用程序運行。
    的頭像 發表于 06-23 15:58 ?2422次閱讀
    <b class='flag-5'>openharmony</b>開源項目官網

    openharmony開源發布會

    安卓。OpenHarmony 用戶應用程序為基于服務原子化概念定義的新型應用。 大家可以在 Gitee 下載openharmony代碼:https://gitee.com/openharmon
    的頭像 發表于 06-24 10:09 ?1702次閱讀

    淺析數字AGC的matlab仿真程序

    AGC的浮點仿真程序來了!文末還給出參考資料的列表,建議大家去知網下載。這些資料可以幫助大家完善AGC的理論! %%%%%% AGC性能之測試程序
    的頭像 發表于 06-29 17:01 ?3490次閱讀

    OH 應用程序集成 AGC 認證服務實現郵箱登錄

    AGC一站式服務可以集成到Android、IOS、Web、小程序、HarmonyOS/OpenHarmony應用中,如傳統開發登錄認證服務在集成
    的頭像 發表于 11-22 17:53 ?706次閱讀
    OH <b class='flag-5'>應用程序</b><b class='flag-5'>集成</b> <b class='flag-5'>AGC</b> 認證服務實現郵箱登錄

    基于OpenHarmony編寫GPIO平臺驅動和應用程序

    程序是基于OpenHarmony標準系統編寫的基礎外設類:GPIO驅動。
    的頭像 發表于 09-12 10:04 ?522次閱讀
    基于<b class='flag-5'>OpenHarmony</b>編寫GPIO平臺驅動和<b class='flag-5'>應用程序</b>

    使用SDAccel開發計算存儲應用程序

    電子發燒友網站提供《使用SDAccel開發計算存儲應用程序.pdf》資料免費下載
    發表于 09-18 10:18 ?0次下載
    使用SDAccel開發計算<b class='flag-5'>存儲</b><b class='flag-5'>應用程序</b>

    OpenHarmony:全流程講解如何編寫Watchdog平臺驅動以及應用程序

    1、程序介紹本程序是基于OpenHarmony標準系統編寫的平臺驅動案例:Watchdog目前已在凌蒙派-
    的頭像 發表于 09-19 10:54 ?730次閱讀
    <b class='flag-5'>OpenHarmony</b>:全流程講解如何編寫Watchdog平臺驅動以及<b class='flag-5'>應用程序</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>