tencent cloud

智能媒资托管

产品简介
产品概述
功能介绍
产品优势
应用场景
基本概念
购买指南
快速入门
创建媒体库
发起请求
服务级 API 文档
History
Introduction
API Category
Making API Requests
PaaS Service APIs
Official Cloud Disk APIs
Data Types
Error Codes
业务级 API 文档
简介
访问令牌操作接口
租户空间操作接口
文件操作接口
目录或相簿操作接口
回收站操作接口
配额操作接口
查询任务操作接口
搜索操作接口
历史版本操作接口
目录和文件批量操作接口
收藏操作接口
Error Codes
SDK 文档
Android SDK
iOS SDK
鸿蒙 SDK
常见问题
企业网盘
产品简介
购买指南
快速入门
常见问题
Service Level Agreement
词汇表

快速入门

PDF
Focus Mode
Font Size
Last updated: 2026-01-07 10:49:13

准备工作

您需要一个鸿蒙 NEXT 应用,这个应用可以是现有的工程,也可以是新建的一个空的工程,详情请参见 鸿蒙 NEXT 应用开发指引
请确保您的鸿蒙 NEXT 应用目标为 API 级别12或更高版本。

使用步骤

步骤1:集成 SDK

1. 运行此命令进行 SDK 依赖安装:
ohpm install @tencentcloud/smh_sdk
这将向您工程的 oh-package.json5 添加这样一行依赖代码:
"dependencies": {
...
"@tencentcloud/smh_sdk":"1.0.4"
}
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>(reqeust: SMHAPIRequest<T>) => {
return new Promise(async (resolve, reject) => {
try {
let accessToken = new SMHAccessToken();
accessToken.libraryId = "libraryId"; // 设置媒体库 ID。
accessToken.spaceId = "spaceId"; // 设置空间 ID
accessToken.accessToken = "accessToken"; //设置 accessToken
accessToken.expiresIn = 1800;
resolve(accessToken);
} catch (err) {
}
});
}

步骤3:访问 SMH 服务

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) {
// 异常处理
}

其他配置

重试策略配置

// 设置重试间隔时间,默认:1s
SMHServiceConfig.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;

并发策略配置

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

日志配置

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


Help and Support

Was this page helpful?

Help us improve! Rate your documentation experience in 5 mins.

Feedback