智能媒资托管 快速入门(鸿蒙 SDK)

ohpm install @tencentcloud/smh_sdk这将向你工程的 oh-package.json5 添加这样一行依赖代码。

相关产品
智能媒资托管 产品页,含版本规格、价格与购买入口。

一、准备工作

·你需要一个鸿蒙 NEXT 应用,这个应用可以是现有的工程,也可以是新建的一个空的工程,详情请参见 鸿蒙 NEXT 应用开发指引。

·请确保你的鸿蒙 NEXT 应用目标为 API 级别12或更高版本。

二、步骤1:集成 SDK

1. 运行此命令进行 SDK 依赖安装:

"dependencies": { … "@tencentcloud/smh_sdk":"1.0.5" }

2. SDK 需要网络权限,用于与 COS 服务器进行通信,请在应用模块下的 module.json5 中添加如下权限声明:

…"requestPermissions":[ { "name" : "ohos.permission.INTERNET", … }]…

三、步骤2:初始化

注意:在 控制台 创建媒体库后,控制台会展示为你生成的专属域名,强烈建议你将 SMHServiceConfig.sharedConfig().host 设置为你的专属域名。

注意:

// 配置控制台创建媒体库后显示的“访问域名”SMHServiceConfig.sharedConfig().host = "<libraryId>.api.tencentsmh.cn";// 配置 accesstoken 刷新回调SMHAccessTokenProvider.singleProvider().accessRefreshCallBack = <T>(request: SMHAPIRequest<T>) => {return new Promise(async (resolve, reject) => { try { let accessToken = new SMHAccessToken(); // 设置媒体库 ID accessToken.libraryId = "libraryId"; // 设置空间 ID accessToken.spaceId = "spaceId"; // 设置 accessToken accessToken.accessToken = "accessToken"; // 设置起始时间,Date 类型,此处通过毫秒时间戳构造 Date // 建议返回服务器时间作为签名的开始时间,避免由于用户手机本地时间偏差过大导致请求过期 accessToken.beginDate = new Date(); // 设置访问令牌的有效时长,单位为秒 accessToken.expiresIn = 1800; resolve(accessToken); } catch (err) { }});}

四、1. 上传文件

try { let filePath = "本地文件路径"; // 调用 SMHFileApis 的 uploadObject 方法进行文件上传 let task = SMHFileApis.uploadObject({ spaceId: "spaceId", libraryId: "libraryId", body: filePath, // 本地路径 uploadPath: `smh/test.jpg` // 目标路径 }); task.onStateChange = (state: SMHTransferState) => { // 任务状态回调 } task.confirmKeyInitCallback = (confimKey: string) => { // 上传返回 confirmKey 回调。用于断点续传 } task.onProgress = (progress) => { // 进度回调 } task.onFinish = (result?: object, error?: SMHError) => { // 完成回调 } // 启动任务 task.start(); //其他方法 //task.pause() 暂停任务 //task.cancel() 取消任务 //task.resume() 重新启动任务,与 pause 配合使用}catch (e) { // 异常处理}

断点续传

try { let filePath = "本地文件路径"; // 调用 SMHFileApis 的 uploadObject 方法进行文件上传 let task = SMHFileApis.uploadObject({ spaceId: "spaceId", libraryId: "libraryId", body: filePath, // 本地路径 uploadPath: `smh/test.jpg`, // 目标路径 confirmKey:"confirmKey"// confirmKeyInitCallback 回调返回的 confirmKey。 }); task.onStateChange = (state: SMHTransferState) => { // 任务状态回调 } task.confirmKeyInitCallback = (confimKey: string) => { // 上传返回 confirmKey 回调。用于断点续传 } task.onProgress = (progress) => { // 进度回调 } task.onFinish = (result?: object, error?: SMHError) => { // 完成回调 } // 启动任务 task.start(); //其他方法 //task.pause() 暂停任务 //task.cancel() 取消任务 //task.resume() 重新启动任务,与 pause 配合使用}catch (e) { // 异常处理}

五、2. 下载文件

注意:说明:

注意:下载接口默认支持断点续传,确保写入本地路径不变即可。

try { // 调用 SMHFileApis 的 downloadObject 方法进行文件下载 let task = SMHFileApis.downloadObject({ spaceId: "spaceId", libraryId: "libraryId", filePath: `smh/test.jpg`,// 远端路径 savePath: "本地路径" // 本地路径 }) task.onStateChange = (state: SMHTransferState) => { // 任务状态回调 } task.onProgress = (progress: HttpProgress) => { // 进度回调 } task.onFinish = (result?: object, error?: SMHError) => { // 完成回调 } // 启动任务 task.start(); //其他方法 //task.pause() 暂停任务 //task.cancel() 取消任务 //task.resume() 重新启动任务,与 pause 配合使用} catch (e) { // 异常处理}

六、3. 其他请求

// 列出文件夹所有文件try { let result = await SMHDirectoryApis.listDirectory({ libraryId:"libraryId", spaceId:"spaceId", dirPath:'', limit:'10', orderBy:SMHFileListOrderBy.name, orderByType:SMHOrderByType.asc, withFavoriteStatus:true, withInode:true });}catch (e) { // 异常处理}// 创建文件夹try { let result = await SMHDirectoryApis.createDirectory({ libraryId:"libraryId", spaceId:"spaceId", dirPath:'path', withInode:true });}catch (e) { // 异常处理}// 删除文件夹try { let result = await SMHDirectoryApis.deleteDirectory({ libraryId:"libraryId", spaceId:"spaceId", dirPath:'path'});}catch (e) { // 异常处理}

七、重试策略配置

// 设置重试间隔时间,默认:1sSMHServiceConfig.sharedConfig().retrySleep = 1 * 1000;// 设置重试次数,默认:3次SMHServiceConfig.sharedConfig().maxRetryCount = 3;

八、超时时间配置

// 读取超时时间。单位为毫秒(ms),默认为 30 * 1000ms。SMHServiceConfig.sharedConfig().readTimeout = 30 * 1000;// 连接超时时间。单位为毫秒(ms),默认为 15 * 1000ms。SMHServiceConfig.sharedConfig().connectTimeout = 15 * 1000;

九、并发策略配置

// 设置上传最大并发数。默认:4SMHServiceConfig.sharedConfig().setUploadMaxConcurrentCount(4);// 设置下载最大并发数。默认:4SMHServiceConfig.sharedConfig().setDownloadMaxConcurrentCount(4);

十、日志配置

// 自定义日志输出回调,用于业务层收集日志QCloudLogger.logOutputCallback = (log: string) => { console.log(log);}// 是否关闭日志:true:关闭, false:打开QCloudLogger.setClose(true);

赞 (0)
上一篇 4天前
下一篇 4天前