当前位置:首页>鸿蒙APP>【鸿蒙课堂】云开发必备能力:云存储快速上手教程

【鸿蒙课堂】云开发必备能力:云存储快速上手教程

  • 2026-11-10 21:10:14
【鸿蒙课堂】云开发必备能力:云存储快速上手教程

一、引言

Cloud Foundation Kit(云开发服务)可以按需为应用提供云函数、云数据库、云存储、预加载等云端服务。而今天所讲的云存储便是其中重要的一个服务,它提供高效、经济的文件存储服务,为应用的文件上传、下载、保存和分享提供可靠支撑。

二

开发准备

首先开通云存储服务,已开通,可以跳过此步骤。具体可以参考:开通云存储服务

1、登录AppGallery Connect,点击“开发与服务”。

2、在项目列表中点击需要开通云存储的项目。

3、选择“云开发(Serverless) > 云存储”,进入云存储页面,点击“立即开通”。

三

云储存

云存储配置项以及实现云存储功能

1、在module.json5中添加网络权限

"requestPermissions": [  {    "name": "ohos.permission.INTERNET"  }

]

2、安装AGC认证服务SDK

2.1前提条件

安装HUAWEI DevEco Studio 5.0.3.100及以上版本,配置 SDK API Version 12及以上,添加配置文件agconnect-services.json,将其拷贝到DevEco Studio项目的“entry\src\main\resources\rawfile”目录下。

2.2配置SDK依赖,使用命令安装sdk

ohpm install @hw-agconnect/auth

3、调用sdk方法,获取认证凭证

3.1初始化应用级上下文

在“entry/src/main/ets/common”目录下添加GlobalContext.ets文件

3.2在EntryAbility.ets中实现auth的初始化

在entry模块下的src/main/ets/entryability/EntryAbility.ets中添加以下代码:

GlobalContext.initContext(this.context)let file = this.context.resourceManager.getRawFileContentSync('agconnect-services.json');let json: string = buffer.from(file.buffer).toString();auth.init(this.context, json);

并且调用cloudCommon.init()方法进行初始化时,传入获取的凭据

 let provider = auth.getAuthProvider(); // 在用户登录成功的情况下调用此方法获取authProvider    cloudCommon.init({      region: cloudCommon.CloudRegion.CHINA,      authProvider: provider,      functionOptions: { timeout: 10 * 1000 },      storageOptions: { mode: request.agent.Mode.BACKGROUND, network: request.agent.Network.ANY },      // databaseOptions: { schema: "schema.json", traceId: "traceId" }    })

3.3在src/main/module.json5的metadata 中添加 client_id

4、开通并使用认证服务

4.1开通认证服务

选择“云开发(Serverless)> 认证服务”,进入认证服务的页面。如果首次使用认证服务,请点击“立即开通”开通服务。

4.2启用认证方式

目前使用邮箱地址、华为账号、以及匿名账号认证,如果使用手机号码认证,认证服务的验证/通知短信将不再由HUAWEI AppGallery Connect发送,需要您自行购买第三方短信服务。认证服务可对接您提供的短信发送接口,来进行后续短信的正常下发。在认证服务界面中,开启对应的服务即可。

下面为使用华为账号认证的代码片段:

Button('华为账号登录')  .onClick(()=>{    auth.signIn({      autoCreateUser: true,      "credentialInfo": {        "kind": 'hwid'      }    }).then(signInResult => {      hilog.info(0x0000, 'testTag', '%{public}s',  `signInHwid success. result: ${signInResult.getUser().getUid()}`);      hilog.info(0x0000, 'testTag', '%{public}s',  `signInHwid success. result: ${JSON.stringify(signInResult.getUser())}`);      hilog.info(0x0000, 'testTag', '%{public}s',  `signInHwid success. result: ${JSON.stringify(signInResult)}`);    })      .catch((error: BusinessError) => {        hilog.error(0x0000, 'testTag', '%{public}s', `signInHwid error, Code: ${error.code}, message: ${error.message}`);      })  })

认证成功后,可以在AGC后台看到自己的认证用户

4.3初始化云存储实例

let storageBucket: cloudStorage.StorageBucket = cloudStorage.bucket();

并且上传文件至云侧

// 上传指定文件至云侧upload() {  this.selectPhoto().then((photoSelectResult: photoAccessHelper.PhotoSelectResult) => {    let fileUri = photoSelectResult.photoUris[0];    hilog.info(0x0000, 'testTag', `pick file ${fileUri}`);    let fileName = fileUri.split('/').pop() as string;    hilog.info(0x0000, 'testTag', `file name ${fileName}`);    let cacheFile = GlobalContext.getContext().cacheDir + '/' + fileName;    hilog.info(0x0000, 'testTag', `cacheFile ${cacheFile}`);    // 将选中文件copy至cache目录下    this.copyFile(fileUri, cacheFile);    // 上传至云存储默认实例    this.uploadFile(cacheFile, `screenshot/${fileName}`);  }).catch((err: BusinessError) => {    hilog.error(0x0000, 'testTag', `Failed to upload file, code: ${err.code}, message: ${err.message}`);  })}

5、勾选Automatically generate signature和Associate with registered application两个选项

使用关联注册应用的自动签名后,两个选项都勾选,项目运行成功后,点上传按钮,上传成功后,可以在云存储中查看上传文件。

四

总结

云存储提供了简单易用、功能强大的端/云SDK,实现用户生成内容的存储,开发者无需关注云端能力的构建而聚焦业务逻辑开发,拥有可靠安全、节约成本、操作稳定、弹性伸缩等特点。本文依据Cloud Foundation Kit官方文档编写,实现从认证服务到上传文件到云存储的一整套过程,帮助开发者提升开发效率。

示例工程WeakWebSocket相关链接:https://gitcode.com/harmony_ecosystem_services/HarmonyOSAppDemo/tree/main/ApplicationServices/WeakWebSocket

更多资讯 关注我们

最新文章

随机文章