超级白板
  • iOS : Objective-C
  • Android
  • 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. 文件必须是可编辑的,不支持“只读”、“加密”、或其他受保护的文档,否则会导致转码失败。

全部规范请参考 文件规范

上传普通文件

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

//filePath 待上传文件的绝对路径,可以使用 iOS 系统API获得。
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"pdf"];

//上传文件后转码后渲染模式类型,默认为ZegoDocsViewRenderTypeVector格式,如果用户涉及到 iOS、Web、Windows、Mac、小程序各端的业务,推荐使用 ZegoDocsViewRenderTypeVectorAndIMG 模式。
ZegoSuperBoardRenderType renderType = ZegoSuperBoardRenderTypeVectorAndIMG;

[[ZegoSuperBoardManager sharedInstance] uploadFile:filePath renderType:renderType completionBlock:^(ZegoSuperBoardUploadFileState state, ZegoSuperBoardError errorCode, NSDictionary * _Nonnull infoDictionary) {

    if (errorCode == ZegoSuperBoardSuccess) {
        if (state == ZegoSuperBoardUploadFileStateUpload) {
            // 上传中...
            NSNumber * upload_percent = infoDictionary[SUPER_BOARD_UPLOAD_PERCENT];

            if (upload_percent.integerValue == 1){
                /** 正在转码... */
            }
        } else if (state == ZegoSuperBoardUploadFileStateConvert){
            /** 转换成功 */
            NSString *fileID = infoDictionary[SUPER_BOARD_UPLOAD_FILEID];

        }
    } else {
        /** 上传失败 */
    }

}];

上传 H5 文件

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

//filePath 待上传文件的绝对路径,可以使用 iOS 系统API获得。
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"zip"];

ZegoUploadCustomH5Config * config = [ZegoUploadCustomH5Config new];
config.pageCount = 2; // 页数
config.width = 960;  // 页面的宽
config.height = 540; // 页面的高
config.thumbnailList = nil; //如果需要缩略图传入缩略图网址数组,如@[@"http://url1.jpg",@"http://url2.jpg"]

[[ZegoSuperBoardManager sharedInstance] uploadH5File:filePath config:config completionBlock:^(ZegoSuperBoardUploadFileState state, ZegoSuperBoardError errorCode, NSDictionary * _Nonnull infoDictionary) {

    if (errorCode == ZegoSuperBoardSuccess) {
        if (state == ZegoSuperBoardUploadFileStateUpload) {
            // 上传中...
            NSNumber * upload_percent = infoDictionary[SUPER_BOARD_UPLOAD_PERCENT];

            if (upload_percent.integerValue == 1){
                /** 正在转码... */
            }
        } else if (state == ZegoSuperBoardUploadFileStateConvert){
            /** 转换成功 */
            NSString *fileID = infoDictionary[SUPER_BOARD_UPLOAD_FILEID];

        }
    } else {
        /** 上传失败 */
    }
}];

缓存文件

缓存文件

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

//需要先定义记录缓存的seq,取消缓存的时候会使用到
@property (nonatomic,assign) unsigned int cacheSeq;

//缓存指定文件
NSString * fileID = @"";//上传文件后获取的文件ID
self.cacheSeq = [[ZegoSuperBoardManager sharedInstance] cacheFileWithFileID:fileID completionBlock:^(ZegoSuperBoardCacheState state, ZegoSuperBoardError errorCode, NSDictionary * _Nonnull infoDictionary) {
    if (errorCode == ZegoSuperBoardSuccess) {
        if (state == ZegoSuperBoardCacheStateCaching) {
            NSNumber * download_percent = infoDictionary[SUPER_BOARD_CACHE_PERCENT];
            // 缓存中..
        } else if (state == ZegoSuperBoardCacheStateCached){
            // 缓存成功
        }
    } else {
        // 缓存失败
    }
}];

取消缓存文件

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

// 保存从调用 cacheFileWithFileID 接口返回的 seq值 self.cacheSeq
// 在取消缓存参数中用到
[[ZegoSuperBoardManager sharedInstance] cancelCacheFileWithSeq:self.cacheSeq completionBlock:^(ZegoSuperBoardError errorCode) {
    NSString *msg;
    if (errorCode == ZegoSuperBoardSuccess) {
        //取消成功
    } else {
        //取消失败
    }        
}];

查询文件是否已经有缓存

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

// 通过fileID查询指定文件是否已经缓存过了
[[ZegoSuperBoardManager sharedInstance] queryFileCachedWithFileID:fileID completionBlock:^(ZegoSuperBoardError errorCode, BOOL fileCached) {
    if (errorCode == ZegoSuperBoardSuccess) {
        // 查询成功
        // fileCached 为YES 表示已缓存
        // fileCached 为NO 表示为未缓存
    }else{
        //查询失败
    }
}];
本篇目录