SDKsAndroid
上传文件
使用 Android SDK 独立上传文件并获取远端资源地址。
uploadFile() 是独立文件上传能力,可用于头像、群头像、资料附件或其他业务文件。上传过程不从属于消息,也不会自动创建消息或更新用户资料。
参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
base | OnBase<String> | 是 | 接收上传请求的最终成功或失败结果。 |
listener | OnPutFileListener | 是 | 接收当前任务的上传进度、分片状态和完成信息。 |
putArgs.filepath | String | 是 | Android 应用可读取的本地文件路径。 |
putArgs.name | String | 是 | 上传使用的文件名;PutArgs 默认使用传入路径,可按业务需要改为原始文件名。 |
putArgs.cuase | String | 否 | 业务约定的上传原因。字段名以 Android SDK 的 PutArgs 声明为准。 |
File file = new File(localPath);
PutArgs args = new PutArgs(file.getAbsolutePath());
args.name = file.getName();
args.cuase = "user-avatar";
OpenIMClient.getInstance().uploadFile(
new OnBase<String>() {
@Override
public void onSuccess(String result) {
finishUploadRequest(result);
}
@Override
public void onError(int code, String error) {
showUploadError(code, error);
}
},
new OnPutFileListener() {
@Override
public void uploadComplete(long fileSize, long uploadedSize, long storageSize) {
updateUploadProgress(uploadTaskID, uploadedSize, fileSize);
}
@Override
public void complete(long size, String url, long type) {
completeUpload(uploadTaskID, size, url, type);
}
},
args
);每次调用都传入独立的 OnPutFileListener,因此无需设置全局上传 listener。并行上传时应由业务层为任务生成稳定 ID,并在回调闭包中关联对应任务,不要使用文件名或列表位置作为唯一标识。各回调的职责见跟踪文件上传进度。
complete() 返回的 URL 可用于后续更新头像、保存附件地址或创建 URL 类型的媒体消息。上传成功只表示文件资源已经写入远端;资料更新、消息创建和消息发送仍需分别调用对应 API。
这个页面有帮助吗?