什么是AppGallery Connect云存储服务?

AppGallery Connect(简称AGC)云存储服务专为开发者打造的可伸缩、免维护的云端存储服务,通过集成云存储SDK,您可以将图片、音频、视频或其他由用户生成的内容存储到云端和从云端下载回本地。

您将建立什么?

在本次Codelab中,您将建立一个集成云存储能力的应用,该应用具备通过调用API接口上传和下载文件的功能。

您将会学到什么

您需要什么?

开发环境及技能要求:

运行终端要求:

集成AGC云存储服务,需要完成以下准备工作

具体操作,请按照《AppGallery Connect集成准备》中详细说明来完成。

开通云存储服务

集成Cloud Storage SDK前需要开通云存储服务,具体步骤如下:

  1. 登录AppGallery Connect网站,点击"我的项目"。
  2. 在项目列表中选择您需要开通云存储服务的项目。
  3. 选择"构建 > 云存储",进入云存储页面,点击"立即开通"。
  4. 在引导界面输入存储实例名称和选择"数据存储位置"。
  5. 点击"下一步",进入默认安全策略设置界面。
  6. 点击"完成"。

集成Cloud Storage SDK

针对Nodejs开发环境,开发前需集成Cloud Storage SDK到您的Nodejs项目中。

  1. 登录AppGallery Connect网站,点击"我的项目"。
  2. 在项目列表中选择您的项目。
  3. 选择左侧页签下"项目设置",选择Server SDK页面,创建/下载API客户端认证凭据。
  4. 按需修改认证凭据文件名、拷贝认证凭据到其他目录。
  5. 打开NPM项目下的package.json文件,添加如下依赖。
    "dependencies": { "@agconnect/cloudstorage-server": "1.0.0" }
  6. 在项目目录执行如下代码安装依赖:
    npm install

在调用云存储SDK之前,请先导入认证凭据。

  1. 导入AGC模块
    const {AGCClient, CredentialParser} = require('@agconnect/common-server'); const {StorageManagement} = require('@agconnect/cloudstorage-server');
  2. 在代码入口处导入认证凭据(请修改为实际的PATH路径和json文件名):
    const credential = CredentialParser.toCredential(' [PATH]/agc-apiclient-xxx-xxx.json'); AGCClient.initialize(credential);

本次Codelab中您可以调用Cloud Storage SDK的相关API进行相应功能点开发,详见如下:

初始化

在使用云存储API前,根据需要初始化云存储实例、存储实例、文件实例。您可以通过在AppGallery Connect网站 的"项目设置>构建>云存储"页面中的存储实例框中获取"存储实例"名称。(代码中的testFile.txt仅为示例,请修改为实际的存储实例名和文件名)

const storage = new StorageManagement(); const bucket = storage.bucket(‘test-bucket'); const file = bucket.file(‘testFile.txt');

上传文件

调用uploadFile()方法可以将文件上传到云端。

function uploadFile() { const storage = new StorageManagement(); const bucket = storage.bucket(bucketName); bucket.upload('./test.txt').then(res => console.log(res)).catch(err => console.log(err)); }

(在工程代码中配置了指定的上传的文件,即项目目录下的test.txt文件)

下载文件

调用downloadFile()方法可以将刚才上传的文件从云端下载回本地,该文件默认保存在上传的目录中,名称采用自定义名称localFile保存。

const fs = require('fs'); function downloadFile() { const storage = new StorageManagement(); const bucket = storage.bucket(bucketName); const remoteFile = bucket.file('test.txt'); const localFile = './test.txt'; remoteFile.createReadStream() .on('error', err => { }) .on('end', () => { }) .pipe(fs.createWriteStream(localFile)) }

元数据操作

  1. 调用getFileMetadata()方法可以获取文件的元数据。
    function getFileMetadata() { const storage = new StorageManagement(); const bucket = storage.bucket(bucketName); const file = bucket.file('test.txt'); file.getMetadata().then(res => { console.log(res); }).catch(err => { console.log(err); }) }
  2. 调用updateFileMetadata()方法修改文件的元数据。
    function updateFileMetadata() { const storage = new StorageManagement(); const bucket = storage.bucket(bucketName); const file = bucket.file('test.txt'); const metadata = { contentLanguage: 'en-US', customMetadata: { test: 'test' } }; file.setMetadata(metadata).then(res => { console.log(res); }).catch(err => { console.log(err); }) }

获取文件列表

调用getFileList()方法可以从云端获取文件列表。

function getFileList() { const storage = new StorageManagement(); const bucket = storage.bucket(bucketName); bucket.getFiles({delimiter: '/'}).then(res => { console.log(res); }).catch(err => { console.log(err); }) }

删除文件

调用deleteFile()方法可以将刚才上传的文件从云端删除。

function deleteFile() { const storage = new StorageManagement(); const bucket = storage.bucket(bucketName); const file = bucket.file('test.txt'); file.delete().then(res => { }).catch(err => { }) }

可以通过取消demo中方法的注释来调用相应的方法。

uploadFile(); function uploadFile() { const storage = new StorageManagement(); const bucket = storage.bucket(bucketName); bucket.upload('./test.txt') .then(res => console.log(res)) .catch(err => console.log(err)); }

然后在项目目录下运行以下命令测试demo:

node cloudstorage.js

当在控制台看到打印的文件元数据的日志时,表明文件已经上传成功:

AGC的云存储服务提供可视化的文件管理和数据分析功能。

  1. 登录AppGallery Connect网站,点击"我的项目"。
  2. 在项目列表中找到您的项目。
  3. 选择"构建 > 云存储",进入云存储页面,可进行文件管理,包括上传、查看、下载、删除文件等。
  4. 点击"用量统计"页签,还可以查看云存储用量统计情况。页面展示当前存储实例下的存储用量、对象数量、网络流量和请求数。您可以在页面右上角选择需要查看数据的时间段(当天、昨天、过去7天、过去30天)。

祝贺您,您已经成功地构建了您的第一个集成AGC Cloud Storage的应用程序,并学到了如何在AGC控制台对Cloud Storage进行管理。

AGC Cloud Storage的相关API介绍请参见云存储API参考
本Codelab中所用demo源码下载地址如下:

源码下载

已复制代码