SDKsHarmonyOS商业版
上传文件
独立上传本地文件并取得远端资源地址。
uploadFile() 是独立上传能力,可用于用户头像、群头像、资料附件或其他业务文件。它不从属于消息,也不会自动创建或发送消息。
参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
filepath | string | 是 | 原生 SDK 能读取的本地文件路径。 |
name | string | 是 | 带合理扩展名的文件名。 |
mimeType | string | 是 | 文件的真实 MIME 类型。 |
fileCategory | string | 是 | 当前存储服务约定的资源分类。 |
cancelID | string | 是 | 业务为上传任务生成的唯一取消 ID。 |
data | string | 是 | 当前以路径上传时传空字符串;其他值只按交付方确认的协议使用。 |
import sdk, {
EventOnUploadFileProgressData,
OpenIMSDKEvent,
UploadFileReq,
UploadFileResp,
} from '@openimsdk/imsdk';
const cancelID = `avatar-${Date.now()}`;
const handleUploadProgress = (data: EventOnUploadFileProgressData): void => {
setCurrentUploadProgress(data.progress);
};
const unsubscribeUploadProgress = sdk.on(
OpenIMSDKEvent.EventOnUploadFileProgress,
handleUploadProgress,
);
const request: UploadFileReq = {
filepath: selectedImagePath,
name: 'avatar.jpg',
mimeType: 'image/jpeg',
fileCategory: 'image',
cancelID: cancelID,
data: '',
};
const response: UploadFileResp = await sdk.uploadFile(request);
await updateProfileAvatar(response.url);
export function removeUploadProgressListener(): void {
unsubscribeUploadProgress();
}进度事件只有 progress,没有任务 ID。多个任务并发时不能仅靠该事件归属进度;需要逐任务准确展示时应串行上传或在业务层限制并发。Promise 成功只表示文件上传完成,后续更新头像、附件或消息仍需调用对应 API。任务结束或上传状态层销毁时调用 unsubscribeUploadProgress()。
这个页面有帮助吗?