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,
});参数说明
| 参数 | 类型 | 必填 | 含义 |
|---|---|---|---|
name | string | 是 | 上传的目标文件名。 |
contentType | string | 是 | 文件的 MIME 类型(例如 image/png、video/mp4 等)。 |
uuid | string | 是 | 本次上传任务的唯一业务标识。 |
cause | string | 否 | 上传原因标识(如 user-avatar、group-avatar 等)。 |
filepath | string | 是 | 应用沙盒中可读取的本地文件绝对路径。 |
返回结果
调用成功后返回包含远端文件地址的对象 { url: string }。
- 获取到
url后,可用于调用更新当前用户资料更新头像; - 或用于创建 URL 型媒体消息后调用发送已上传的媒体消息进行发送。
监听上传状态
上传大文件时,可监听上传进度与完成事件:
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);组件销毁、退出登录或切换账号时,取消该监听。
这个页面有帮助吗?