浏览 SDKs · React Native
平台
SDKsReact Native

上传文件

使用 OpenIM React Native SDK 独立上传文件并获取远端资源 URL。

复制

将设备本地文件上传至 OpenIM 服务端配置的存储服务(如 MinIO 或各大云厂商 OSS)。上传成功后可获取公网可访问的资源 URL,常用于设置用户头像、更新群组头像,或在提前上传媒体资源后构造媒体消息。

const { url } = await OpenIMSDK.uploadFile({
  name: 'avatar.png',
  contentType: 'image/png',
  uuid: 'avatar-upload-20260827',
  cause: 'user-avatar',
  filepath,
});

参数说明

参数类型必填含义
namestring是上传的目标文件名。
contentTypestring是文件的 MIME 类型(例如 image/png、video/mp4 等)。
uuidstring是本次上传任务的唯一业务标识。
causestring否上传原因标识(如 user-avatar、group-avatar 等)。
filepathstring是应用沙盒中可读取的本地文件绝对路径。

返回结果

调用成功后返回包含远端文件地址的对象 { url: string }。

监听上传状态

上传大文件时,可监听上传进度与完成事件:

interface UploadProgressPayload {
  current: number;
  size: number;
}

interface UploadCompletePayload {
  data: {
    fileSize: number;
    streamSize: number;
    storageSize: number;
  };
}

const handleUploadProgress = ({ current, size }: UploadProgressPayload) => {
  // 根据上传进度更新 UI 百分比
};

const handleUploadComplete = ({ data }: UploadCompletePayload) => {
  // 上传完成后的业务处理
};

// 设置监听
OpenIMSDK.on(OpenIMEvent.UploadOnProgress, handleUploadProgress);
OpenIMSDK.on(OpenIMEvent.UploadComplete, handleUploadComplete);

// 取消监听
OpenIMSDK.off(OpenIMEvent.UploadOnProgress, handleUploadProgress);
OpenIMSDK.off(OpenIMEvent.UploadComplete, handleUploadComplete);

组件销毁、退出登录或切换账号时,取消该监听。