SDKsAndroid
上传文件
使用 Android SDK 独立上传文件并获取远端资源地址。
独立文件上传能力,可用于头像、群头像、资料附件或其他业务文件。上传过程不从属于具体消息生命周期,也不会自动创建消息或更新用户资料。
参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
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) {
// result 是上传请求的最终结果。
}
@Override
public void onError(int code, String error) {
// code 和 error 说明失败原因。
}
},
new OnPutFileListener() {
@Override
public void open(long size) {
// size 是待上传文件的大小。
}
@Override
public void uploadID(String id) {
// id 是 SDK 生成的上传标识。
}
@Override
public void uploadComplete(long fileSize, long streamSize, long storageSize) {
// 文件、流和存储大小均已可用。
}
@Override
public void complete(long size, String url, long type) {
// url 是已上传资源的远端地址。
}
},
args
);返回结果
成功回调返回上传接口的响应状态;同时,监听器的 complete(long size, String url, long type) 回调会交付文件最终的远端访问地址 url、文件大小及类型。
上传得到的 URL 可直接用于后续更新用户头像、群头像、设置附件或创建媒体消息。需要注意的是,文件上传仅负责将二进制数据写入对象存储,并不会自动更新用户资料或发送消息,后续业务动作仍需调用对应 API 完成。
进度与生命周期回调
OnPutFileListener 提供了详细的分片与上传进度通知:
| 回调 | 参数 | 说明 |
|---|---|---|
open | size | 打开待上传文件,通知文件总字节大小。 |
partSize | partSize, num | 分片上传策略:单分片大小与分片总数。 |
hashPartProgress | index, size, partHash | 单个分片哈希计算完成。 |
hashPartComplete | partsHash, fileHash | 全部文件分片哈希计算完成。 |
uploadID | uploadID | 服务端生成的上传任务 ID。 |
uploadPartComplete | index, partSize, partHash | 单个分片上传完成通知。 |
uploadComplete | fileSize, streamSize, storageSize | 文件传输完成,包含文件大小、流大小与存储大小。 |
complete | size, url, type | 上传全流程完成,交付远端资源 URL。 |
这个页面有帮助吗?