浏览 SDKs · HarmonyOS
平台
SDKsHarmonyOS商业版

上传文件

独立上传本地文件并取得远端资源地址。

复制

uploadFile() 是独立上传能力,可用于用户头像、群头像、资料附件或其他业务文件。它不从属于消息,也不会自动创建或发送消息。

参数说明

参数类型是否必填说明
filepathstring原生 SDK 能读取的本地文件路径。
namestring带合理扩展名的文件名。
mimeTypestring文件的真实 MIME 类型。
fileCategorystring当前存储服务约定的资源分类。
cancelIDstring业务为上传任务生成的唯一取消 ID。
datastring当前以路径上传时传空字符串;其他值只按交付方确认的协议使用。
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()