浏览 SDKs · Android
SDKsAndroid

上传文件

使用 Android SDK 独立上传文件并获取远端资源地址。

复制

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

参数说明

参数类型是否必填说明
baseOnBase<String>接收上传请求的最终成功或失败结果。
listenerOnPutFileListener接收当前任务的文件、分片、哈希及上传完成信息。
putArgs.filepathStringAndroid 应用可读取的本地文件路径。
putArgs.nameString上传使用的文件名;PutArgs 默认使用传入路径,可按业务需要改为原始文件名。
putArgs.cuaseString业务约定的上传原因。字段名以 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
);

回调说明

OnPutFileListener 的回调和参数如下:

回调参数说明
opensize打开指定大小的文件,可用于初始化任务。
partSizepartSize, num单个分片大小和分片总数。
hashPartProgressindex, size, partHash单个分片完成哈希计算时的分片索引、大小和哈希值。
hashPartCompletepartsHash, fileHash所有分片完成哈希计算后的组合哈希和最终文件哈希。
uploadIDuploadIDSDK 生成的上传标识。
uploadPartCompleteindex, partSize, partHash一个分片上传完成时的分片索引、大小和哈希值。
uploadCompletefileSize, streamSize, storageSize整个文件上传阶段的数据:文件大小、流大小和存储大小。
completesize, url, type文件上传完成后的最终大小、远端 URL 和资源类型。

complete() 返回的 URL 可用于后续更新头像、保存附件地址或创建 URL 类型的媒体消息。上传成功只表示文件资源已经写入远端;资料更新、消息创建和消息发送仍需分别调用对应 API。