超级白板
  • iOS
  • Android : Java
  • Web
  • Electron
  • React Native
  • 产品简介
  • 下载
  • 体验 App
  • 快速开始
  • 基础功能
  • 进阶功能
  • 最佳实践
  • 客户端 API
  • 服务端 API v2
  • 常见错误码
  • 常见问题
  • 文档中心
  • 超级白板
  • 基础功能
  • 共享文件管理

共享文件管理

更新时间:2023-07-07 10:14

本文主要介绍如何管理要共享的文件。

上传文件

调用 ZegoSuperBoardManager 的上传文件方法上传文件到 ZEGO 文件云服务,上传成功后会获取该文件的 fileID,开发者可以调用 ZegoSuperBoardManagercreateFileView 接口,传入 ZegoCreateFileConfig 加载该文件。

文件上传分为上传 ZegoSuperBoardUploadFileState.Upload 和格式转换 ZegoSuperBoardUploadFileState.Convert 两个阶段。

  • 上传阶段:如果正常上传,会产生多次回调,每次都包含文件上传进度。例如当前上传 50%,则 "infoMap" 内容为 {"upload_percent":0.50};当前上传 100%,则 "infoMap" 内容为 {"upload_percent":1.00}
  • 格式转换阶段:如果转换成功,只产生一次回调,包含转换后的文件 ID。例如当前转换完成,则 "infoMap" 内容为 {"upload_fileid":"ekxxxxxxxxv"}

上传的文件必须满足相应的规范:

  1. 文件请使用 Microsoft Office 2013 或以上版本编辑/保存,不支持低版本 Microsoft Office 或其他办公软件保存的文件,如 WPS、Keynote、Microsoft Office 2003 等。
  2. 文件必须是可编辑的,不支持“只读”、“加密”、或其他受保护的文档,否则会导致转码失败。
  3. 如果您使用的是 2.0 版本的超级白板 SDK,可能因为安卓分区存储问题导致上传文件失败,请升级 SDK 至最新版本或者参考 上传文件失败怎么处理? 进行设置。

全部规范请参考 文件规范

上传普通文件

调用 uploadFile 方法上传普通文件。

// filePath 待上传文件的绝对路径
String filePath = "";
ZegoSuperBoardRenderType renderType = ZegoSuperBoardRenderType.IMG;//例如转换成image格式
ZegoSuperBoardManager.getInstance().uploadFile(filePath, renderType, new IZegoSuperBoardUploadFileListener() {
    @Override
    public void onUpload(ZegoSuperBoardUploadFileState state, int errorCode, @NonNull HashMap<String, Object> infoMap) {
        if (errorCode == ZegoSuperBoardError.ZegoSuperBoardSuccess) {
            if (state == ZegoSuperBoardUploadFileState.Upload) {
                // 上传中...
                float uploadPercent = (float) infoMap.get("upload_percent");
                if (uploadPercent == 1f){
                /** 正在转码... */
                }
            } else if (state == ZegoSuperBoardUploadFileState.Convert){
                /** 转换成功 */
                String fileID = (String) infoMap.get(ZegoSuperBoardError.UPLOAD_FILEID);
            }
        } else {
        /** 上传失败 */
        }
    }
});

上传 H5 文件

通过 ZegoUploadCustomH5Config 设置上传 H5 文件的配置参数,并调用 uploadH5File 方法上传 H5 文件。


String filePath = "";

ZegoUploadCustomH5Config mH5Config = new ZegoUploadCustomH5Config();
mH5Config.height = 960;
mH5Config.width = 540;
mH5Config.pageCount = 5;

ZegoSuperBoardManager.getInstance().uploadH5File(filePath, mH5Config, new IZegoSuperBoardUploadFileListener() {
    @Override
    public void onUpload(ZegoSuperBoardUploadFileState state, int errorCode, @NonNull HashMap<String, Object> infoMap) {
        if (errorCode == ZegoSuperBoardError.ZegoSuperBoardSuccess) {
            if (state == ZegoSuperBoardUploadFileState.Upload) {
                // 上传中...
                float uploadPercent = (float) infoMap.get("upload_percent");
                if (uploadPercent == 1f){
                    /** 正在转码... */
                }
            } else if (state == ZegoSuperBoardUploadFileState.Convert){
                /** 转换成功 */
                String fileID = (String) infoMap.get(ZegoSuperBoardError.UPLOAD_FILEID);
            }
        } else {
            /** 上传失败 */
        }
    }
});

缓存文件

缓存文件

调用 cacheFile 方法将文件缓存到本地。

int seq = ZegoSuperBoardManager.getInstance().cacheFile(fileID, new IZegoSuperBoardCacheFileListener() {
    @Override
    public void onCache(ZegoSuperBoardCacheFileState state, int errorCode, @NonNull HashMap<String, Object> infoMap) {
        if (errorCode == ZegoSuperBoardError.ZegoSuperBoardSuccess) {
            if (state == ZegoSuperBoardCacheFileState.Caching) {
                float cachePercent = (float) infoMap.get("cache_percent") * (float) 100;
                // 缓存中...
            } else if (state == ZegoSuperBoardCacheFileState.Cached) {
            // 缓存成功
            }
        } else {
        // 缓存失败
        }
    }
});

取消缓存文件

调用 cancelCacheFile 方法取消掉正在缓存的文件。

// 保存从调用 cacheFile() 接口返回的 seq值
// 在取消缓存参数中用到
ZegoSuperBoardManager.getInstance().cancelCacheFile(seq, new IZegoSuperBoardApiCalledCallback() {
    @Override
    public void onApiCalledResult(int errorCode) {
        // errorCode等于0,取消缓存成功
    }
});

查询文件是否已经有缓存

调用 queryFileCached 方法查询文件缓存是否存在。

// 通过fileID查询指定文件是否已经缓存过了
ZegoSuperBoardManager.getInstance().queryFileCached(fileID, new IZegoSuperBoardQueryFileCachedListener() {
    @Override
    public void onQueryCached(int errorCode, boolean fileCached) {
        // fileCached 是否已有缓存
    }
});
本篇目录