存储服务

更新时间: 2024/09/10 17:36:40

NetEase IM SDK(以下简称 NIM SDK)提供存储服务,支持添加、查询自定义存储场景和文件上传。

本文介绍存储服务相关 API。

支持平台

Android iOS macOS/Windows Web/uni-app/小程序 HarmonyOS

API 概览

API 描述 起始版本
addCustomStorageScene 添加自定义存储场景 v10.2.0(对应 HarmonyOS v0.5.0)
getStorageSceneList 获取存储场景列表 v10.2.0(对应 HarmonyOS v0.5.0)
createUploadFileTask 创建文件上传任务 v10.2.0(对应 HarmonyOS v0.5.0)
uploadFile 上传文件 v10.2.0(对应 HarmonyOS v0.5.0)
cancelUploadFile 取消文件上传 v10.2.0(对应 HarmonyOS v0.5.0)
downloadFile 下载文件
  • Android/iOS:v10.2.6
  • Windows/macOS:10.3.0
  • shortUrlToLong 短链接转长链接
  • Android/iOS/Web:v10.2.3
  • Windows/macOS:10.3.0
  • imageThumbUrl 生成图片缩略图链接
  • Android/iOS/Web:v10.2.6
  • Windows/macOS:10.3.0
  • HarmonyOS:v1.3.0
  • videoCoverUrl 生成视频封面图链接
  • Android/iOS/Web:v10.2.6
  • Windows/macOS:10.3.0
  • HarmonyOS:v1.3.0
  • downloadAttachment 下载消息附件。 v10.3.0
    getImageThumbUrl 获取图片消息中的缩略图链接。 v10.3.0
    getVideoCoverUrl 获取视频消息中的视频封面链接。 v10.3.0

    接口类

    V2NIMStorageService 类提供存储服务相关接口。

    addCustomStorageScene

    接口描述

    添加自定义存储场景。

    该方法为同步。

    参数说明

    Android
    javaV2NIMStorageScene addCustomStorageScene(String sceneName, long expireTime);
    
    参数名称 类型 是否必填 默认值 描述
    sceneName String - 自定义场景名
    expireTime long - 过期时间(秒),0 表示永不过期。
    iOS
    objective-c- (void)addCustomStorageScene:(NSString *)sceneName expireTime:(NSUInteger)expireTime;
    
    参数名称 类型 是否必填 默认值 描述
    sceneName NSString * - 自定义场景名
    expireTime NSUInteger - 过期时间(秒),0 表示永不过期。
    macOS/Windows
    cppvirtual void addCustomStorageScene(nstd::string sceneName, uint64_t expireTime) = 0;
    
    参数名称 类型 是否必填 默认值 描述
    sceneName nstd::string - 自定义场景名
    expireTime uint64_t - 过期时间(秒),0 表示永不过期。
    Web/uni-app/小程序
    typescriptaddCustomStorageScene(sceneName: string, expireTime: number): V2NIMStorageScene
    
    参数名称 类型 是否必填 默认值 描述
    sceneName string - 自定义场景名
    expireTime number - 过期时间(秒),0 表示永不过期。
    HarmonyOS
    typescriptaddCustomStorageScene(sceneName: string, expireTime: number): V2NIMStorageScen
    
    参数名称 类型 是否必填 默认值 描述
    sceneName string - 自定义场景名
    expireTime number - 过期时间(秒),0 表示永不过期。

    示例代码

    Android
    javaV2NIMStorageService v2StorageService = NIMClient.getService(V2NIMStorageService.class);
    v2StorageService.addCustomStorageScene(sceneName, expireTime);
    
    iOS
    objective-c[[[NIMSDK sharedSDK] v2StorageService] addCustomStorageScene:@"scene_name" expireTime:1000];
    
    macOS/Windows
    cppstorageService.addCustomStorageScene("customScene", 0); // never expire
    
    Web/uni-app/小程序
    typescriptnim.V2NIMStorageService.addCustomStorageScene("nim", 86400)
    
    HarmonyOS
    typescriptnim.storageService.addCustomStorageScene("nim", 86400)
    

    返回值

    Android/Web/HarmonyOS
    iOS/macOS/Windows

    相关回调

    getStorageSceneList

    接口描述

    获取存储场景列表。

    该方法为同步。

    参数说明

    Android
    javaList<V2NIMStorageScene> getStorageSceneList();
    
    iOS
    objective-c- (NSArray<V2NIMStorageScene *> *)getStorageSceneList;
    
    macOS/Windows
    cppvirtual nstd::vector<V2NIMStorageScene> getStorageSceneList() = 0;
    
    Web/uni-app/小程序
    typescriptgetStorageSceneList(): V2NIMStorageScene[]
    
    HarmonyOS
    typescriptgetStorageSceneList(): V2NIMStorageScene[]
    

    示例代码

    Android
    javaV2NIMStorageService v2StorageService = NIMClient.getService(V2NIMStorageService.class);
    List<V2NIMStorageScene> storageSceneList = v2StorageService.getStorageSceneList();
    
    iOS
    objective-c[[[NIMSDK sharedSDK] v2StorageService] getStorageSceneList];
    
    macOS/Windows
    cppauto sceneList = storageService.getStorageSceneList();
    
    Web/uni-app/小程序
    typescriptconst sceneList = nim.V2NIMStorageService.getStorageSceneList()
    
    HarmonyOS
    typescriptconst sceneList = nim.storageService.getStorageSceneList()
    

    返回值

    V2NIMStorageScene 列表

    相关回调

    createUploadFileTask

    接口描述

    创建文件上传任务。

    该方法为同步。

    参数说明

    Android
    javaV2NIMUploadFileTask createUploadFileTask(V2NIMUploadFileParams params);
    
    参数名称 类型 是否必填 默认值 描述
    params V2NIMUploadFileParams - 文件上传参数
    iOS
    objective-c- (V2NIMUploadFileTask *)createUploadFileTask:(V2NIMUploadFileParams *)fileParams;
    
    参数名称 类型 是否必填 默认值 描述
    params V2NIMUploadFileParams * - 文件上传参数
    macOS/Windows
    cppvirtual V2NIMUploadFileTask createUploadFileTask(V2NIMUploadFileParams fileParams) = 0;
    
    参数名称 类型 是否必填 默认值 描述
    params V2NIMUploadFileParams - 文件上传参数
    Web/uni-app/小程序
    typescriptcreateUploadFileTask(fileParams: V2NIMUploadFileParams): V2NIMUploadFileTask
    
    参数名称 类型 是否必填 默认值 描述
    fileParams V2NIMUploadFileParams - 文件上传参数
    HarmonyOS
    typescriptcreateUploadFileTask(fileParams: V2NIMUploadFileParams): V2NIMUploadFileTask
    
    参数名称 类型 是否必填 默认值 描述
    fileParams V2NIMUploadFileParams - 文件上传参数

    示例代码

    Android
    javaV2NIMStorageService v2StorageService = NIMClient.getService(V2NIMStorageService.class);
    V2NIMUploadFileParams params = new V2NIMUploadFileParams("filePath")
    V2NIMUploadFileTask uploadFileTask = v2StorageService.createUploadFileTask(params);
    
    iOS
    objective-cV2NIMUploadFileParams *fileParams = [[V2NIMUploadFileParams alloc] init];
    fileParams.filePath = @"filePath";
    [[[NIMSDK sharedSDK] v2StorageService] createUploadFileTask:fileParams];
    
    macOS/Windows
    cppV2NIMUploadFileParams fileParams;
    fileParams.filePath = "~/test.txt";
    fileParams.name = "hello.txt";
    fileParams.scene = "customScene";
    auto uploadTask = storageService.createUploadFileTask(fileParams);
    
    Web/uni-app/小程序
    typescriptconst task = nim.V2NIMStorageService.createUploadFileTask({
        fileObj: document.getElementById('input-id').files[0]
    }})
    
    HarmonyOS
    typescriptconst params:V2NIMUploadFileParams = {
        filePath: '文件沙盒路径',
        sceneName: '场景名'
    } as V2NIMUploadFileParams
    
    const task = nim.storageService.createUploadFileTask(params)
    

    返回值

    V2NIMUploadFileTask

    相关回调

    uploadFile

    接口描述

    上传文件。

    参数说明

    Android
    javavoid uploadFile(V2NIMUploadFileTask fileTask, V2NIMSuccessCallback<String> success,
        V2NIMFailureCallback failure,
        V2NIMProgressCallback progress);
    
    参数名称 类型 是否必填 默认值 描述
    fileTask V2NIMUploadFileTask - 文件上传任务对象
    success V2NIMSuccessCallback - 上传成功回调,返回文件 URL 地址。
    failure V2NIMFailureCallback - 上传失败回调,返回错误码
    progress V2NIMProgressCallback null 文件上传进度回调
    iOS
    objective-c- (void)uploadFile:(V2NIMUploadFileTask *)fileTask
               success:(V2NIMFileUploadSuccess)success
               failure:(V2NIMFileUploadFailure)failure
              progress:(V2NIMFileUploadProgress)progress;
    
    参数名称 类型 是否必填 默认值 描述
    fileTask V2NIMUploadFileTask * - 文件上传任务对象
    success V2NIMFileUploadSuccess - 上传成功回调,可自定义设置。
    failure V2NIMFileUploadFailure - 上传失败回调,可自定义设置。
    progress V2NIMProgressCallback null 文件上传进度回调
    macOS/Windows
    cppvirtual void uploadFile(V2NIMUploadFileTask fileTask,
        V2NIMSuccessCallback<nstd::string> success,
        V2NIMFailureCallback failure,
        V2NIMProgressCallback progress) = 0;
    
    参数名称 类型 是否必填 默认值 描述
    fileTask V2NIMUploadFileTask - 文件上传任务对象
    success V2NIMSuccessCallback - 上传成功回调,返回文件 URL 地址。
    failure V2NIMFailureCallback - 上传失败回调,返回错误码
    progress V2NIMProgressCallback null 文件上传进度回调
    Web/uni-app/小程序
    typescriptuploadFile(fileTask: V2NIMUploadFileTask, progress: V2NIMProgressCallback): Promise<string>
    
    参数名称 类型 是否必填 默认值 描述
    fileTask V2NIMUploadFileTask - 文件上传任务对象
    progress V2NIMProgressCallback null 文件上传进度回调
    HarmonyOS
    typescriptuploadFile(fileTask: V2NIMUploadFileTask, progress: V2NIMProgressCallback): Promise<string>
    
    参数名称 类型 是否必填 默认值 描述
    fileTask V2NIMUploadFileTask - 文件上传任务对象
    progress V2NIMProgressCallback null 文件上传进度回调

    示例代码

    Android
    javaV2NIMStorageService v2StorageService = NIMClient.getService(V2NIMStorageService.class);
    v2StorageService.uploadFile(task, (V2NIMSuccessCallback<String>) s -> {
        // 上传成功
    }, (V2NIMFailureCallback) error -> {
        // 上传失败
    }, (V2NIMProgressCallback) progress -> {
        // 上传进度
    });
    
    iOS
    objective-c[[[NIMSDK sharedSDK] v2StorageService] uploadFile:fileTask success:^(NSString * _Nonnull urlString) {
            // 上传成功
        } failure:^(V2NIMError * _Nonnull error) {
            // 上传失败
        } progress:^(float progress) {
             // 上传进度
        }];
    
    macOS/Windows
    cppV2NIMUploadFileParams fileParams;
    fileParams.filePath = "~/test.txt";
    fileParams.name = "hello.txt";
    fileParams.scene = "customScene";
    auto uploadTask = storageService.createUploadFileTask(fileParams);
    storageService.uploadFile(
        uploadTask,
        [](nstd::string url) {
            // upload file succeeded
        },
        [](V2NIMError error) {
            // upload file failed, handle error
        },
        [](uint32_t progress) {
            // upload progress
        });
    
    Web/uni-app/小程序
    typescriptnim.V2NIMStorageService.uploadFile(task, function onProgress(progress) {
     console.log('uploadFile progress: ', progress)   
    })
    
    HarmonyOS
    typescriptnim.storageService.uploadFile(task, function onProgress(progress) {
     console.log('uploadFile progress: ', progress)   
    })
    

    返回值

    Android/iOS/macOS/Windows

    无返回值

    Web/uni-app/小程序/HarmonyOS

    Promise<string> 文件 URL 地址

    相关回调

    Android/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含文件 URL 地址。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含存储相关错误码。
    iOS
    • 请求成功,返回 V2NIMFileUploadSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFileUploadFailure 回调,可自定义设置。
    Web/uni-app/小程序/HarmonyOS

    cancelUploadFile

    接口描述

    取消文件上传。

    参数说明

    Android
    javavoid cancelUploadFile(V2NIMUploadFileTask fileTask, V2NIMSuccessCallback<Void> success,
        V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 默认值 描述
    fileTask V2NIMUploadFileTask - 需要取消的文件上传任务
    success V2NIMSuccessCallback - 取消成功回调
    failure V2NIMFailureCallback - 取消失败回调,返回错误码
    iOS
    objective-c- (void)cancelUploadFile:(V2NIMUploadFileTask *)fileTask
                     success:(V2NIMSuccessCallback)success
                     failure:(V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 默认值 描述
    fileTask V2NIMUploadFileTask - 需要取消的文件上传任务
    success V2NIMSuccessCallback - 取消成功回调
    failure V2NIMFailureCallback - 取消失败回调,返回错误码
    macOS/Windows
    cppvirtual void cancelUploadFile(V2NIMUploadFileTask fileTask, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 默认值 描述
    fileTask V2NIMUploadFileTask - 需要取消的文件上传任务
    success V2NIMSuccessCallback - 取消成功回调
    failure V2NIMFailureCallback - 取消失败回调,返回错误码
    Web/uni-app/小程序
    typescriptcancelUploadFile(fileTask: V2NIMUploadFileTask): Promise<void>
    
    参数名称 类型 是否必填 默认值 描述
    fileTask V2NIMUploadFileTask - 需要取消的文件上传任务
    HarmonyOS
    typescriptcancelUploadFile(fileTask: V2NIMUploadFileTask): Promise<void>
    
    参数名称 类型 是否必填 默认值 描述
    fileTask V2NIMUploadFileTask - 需要取消的文件上传任务

    示例代码

    Android
    javaV2NIMStorageService v2StorageService = NIMClient.getService(V2NIMStorageService.class);
    v2StorageService.cancelUploadFile(task, (V2NIMSuccessCallback<Void>) s -> {
        // 取消成功
    }, (V2NIMFailureCallback) error -> {
        // 取消失败
    });
    
    iOS
    objective-c[[[NIMSDK sharedSDK] v2StorageService] cancelUploadFile:fileTask success:^{
            //取消成功
        } failure:^(V2NIMError * _Nonnull error) {
            //取消失败
        }];
    
    macOS/Windows
    cppV2NIMUploadFileTask fileTask;
    // uploadFile
    // ...
    storageService.cancelUploadFile(
        fileTask,
        []() {
            // cancel upload file succeeded
        },
        [](V2NIMError error) {
            // cancel upload file failed, handle error
        });
    
    Web/uni-app/小程序
    typescriptnim.V2NIMStorageService.cancelUploadFile(task)
    
    HarmonyOS
    typescriptnim.storageService.cancelUploadFile(task)
    

    返回值

    Android/iOS/macOS/Windows

    无返回值

    Web/uni-app/小程序/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/macOS/Windows
    • 请求成功,返回 V2NIMSuccessCallback 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含存储相关错误码。
    Web/uni-app/小程序/HarmonyOS

    downloadFile

    接口描述

    下载文件。

    参数说明

    Android
    javavoid downloadFile(String url, String filePath, V2NIMSuccessCallback<String> success,
        V2NIMFailureCallback failure, V2NIMProgressCallback progress);
    
    参数名称 类型 是否必填 默认值 描述
    url String - 文件 URL 地址
    filePath String - 文件本地存储路径
    success V2NIMSuccessCallback - 下载成功回调
    failure V2NIMFailureCallback - 下载失败回调,返回错误码
    progress V2NIMProgressCallback null 文件下载进度回调
    iOS
    objective-c- (void)downloadFile:(NSString *)url
                filePath:(NSString *)filePath
                 success:(V2NIMSuccessCallback)success
                 failure:(V2NIMFailureCallback)failure
                progress:(nullable V2NIMProgressCallback)progress;
    
    参数名称 类型 是否必填 默认值 描述
    url NSString * - 文件 URL 地址
    filePath NSString * - 文件本地存储路径
    success V2NIMSuccessCallback - 下载成功回调
    failure V2NIMFailureCallback - 下载失败回调,返回错误码
    progress V2NIMProgressCallback null 文件下载进度回调
    Windows/macOS
    cppvirtual void v2::V2NIMStorageService::downloadFile	(	const nstd::string & 	url,
                                                            const nstd::string & 	savePath,
                                                            V2NIMSuccessCallback< nstd::string > 	success,
                                                            V2NIMFailureCallback 	failure,
                                                            V2NIMProgressCallback 	progress )	
    
    参数名称 类型 是否必填 默认值 描述
    url nstd::string - 文件 URL 地址
    savePath nstd::string - 文件本地存储路径
    success V2NIMSuccessCallback - 下载成功回调
    failure V2NIMFailureCallback - 下载失败回调,返回错误码
    progress V2NIMProgressCallback null 文件下载进度回调

    示例代码

    Android
    javaString url = "https://www.abc.com/ttt.txt";
    // 设置文件存储位置
    String filePath = "xxx/ttt.txt";
    NIMClient.getService(V2NIMStorageService.class).downloadFile(url, filePath, new V2NIMSuccessCallback<String>() {
        @Override
        public void onSuccess(String filePath) {
            // 下载成功
        }
    }, new V2NIMFailureCallback() {
        @Override
        public void onFailure(V2NIMError error) {
            // 下载失败
        }
    }, new V2NIMProgressCallback() {
        @Override
        public void onProgress(int progress) {
            // 下载进度
        }
    });
    
    iOS
    objective-c// 按需配置远程目录
    NSString *url = @"https://www.abc.com/ttt.txt";
    // 按需配置存储目录
    NSString *filePath = @"Document/ttt.txt";
    [[NIMSDK sharedSDK].v2StorageService downloadFile:url filePath:filePath success:^() {
        // 成功回调
    } failure:^(V2NIMError *error) {
        // 失败回调
    } progress:^(NSUInteger progress) {
        // 进度回调
    }]; 
    
    Windows/macOS
    cppstorageService.downloadFile(
        "https://example.com/test.txt",
        "~/test.txt",
        [](const nstd::string& url) {
            // download file succeeded
        },
        [](V2NIMError error) {
            // download file failed, handle error
        },
        [](uint32_t progress) {
            // download progress
        });
    

    返回值

    相关回调

    • 请求成功,返回 V2NIMSuccessCallback 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含存储相关错误码。

    shortUrlToLong

    接口描述

    短链接转长链接。

    参数说明

    Android
    javavoid shortUrlToLong(String url, V2NIMSuccessCallback<String> success,
        V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 默认值 描述
    url String - 文件 URL 地址
    success V2NIMSuccessCallback - 链接转换成功成功回调
    failure V2NIMFailureCallback - 链接转换成功失败回调,返回错误码
    iOS
    objective-c- (void)shortUrlToLong:(NSString *)url
                   success:(V2NIMShortUrlToLongSuccess)success
                   failure:(V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 默认值 描述
    url NSString * - 文件 URL 地址
    success V2NIMShortUrlToLongSuccess - 链接转换成功成功回调,可自定义设置。
    failure V2NIMFailureCallback - 链接转换成功失败回调,返回错误码
    Windows/macOS
    cppvirtual void v2::V2NIMStorageService::shortUrlToLong	(	const nstd::string & 	url,
                                                                V2NIMSuccessCallback< nstd::string > 	success,
                                                                V2NIMFailureCallback 	failure )	
    
    参数名称 类型 是否必填 默认值 描述
    url nstd::string - 文件 URL 地址
    success V2NIMSuccessCallback - 链接转换成功成功回调
    failure V2NIMFailureCallback - 链接转换成功失败回调,返回错误码
    Web/uni-app/小程序
    typescriptshortUrlToLong(url: string): Promise<string>
    
    参数名称 类型 是否必填 默认值 描述
    url string - 文件 URL 地址

    示例代码

    Android
    javaString shortUrl = "https://s.netease.im/safe/AAAAAAAAAAAAAAAAAAAAAAAAAAA?_im_url=1";
    NIMClient.getService(V2NIMStorageService.class).shortUrlToLong(shortUrl, new V2NIMSuccessCallback<String>() {
        @Override
        public void onSuccess(String longUrl) {
            // 转换成功
        }
    }, new V2NIMFailureCallback() {
        @Override
        public void onFailure(V2NIMError error) {
            // 转换失败
        }
    });
    
    iOS
    objective-c// 按需传入短链
    NSString *shortUrl = @"https://s.netease.im/safe/AAAAAAAAAAAAAAAAAAAAAAAAAAA?_im_url=1";
    [[NIMSDK sharedSDK].v2StorageService shortUrlToLong:shortUrl success:^(NSString *url) {
        // 成功回调
    } failure:^(V2NIMError *error) {
        // 失败回调
    }];
    
    Windows/macOS
    cppstorageService.shortUrlToLong("https://example.com/short?_im_url=1", [](nstd::string url) {
        // short url to long succeeded
    }, [](V2NIMError error) {
        // short url to long failed, handle error
    });
    
    Web/uni-app/小程序
    typescriptvar shortUrl = "https://s.netease.im/safe/AAAAAAAAAAAAAAAAAAAAAAAAAAA?_im_url=1";
    var originUrl = await nim.V2NIMStorageService.shortUrlToLong(shortUrl)
    

    返回值

    Android/iOS/Windows/macOS

    Web/uni-app/小程序

    Promise<string>

    相关回调

    Android/Windows/macOS
    • 请求成功,返回 V2NIMSuccessCallback 回调。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含存储相关错误码。
    iOS
    • 请求成功,返回 V2NIMShortUrlToLongSuccess 回调,可自定义设置。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含存储相关错误码。
    Web/uni-app/小程序

    imageThumbUrl

    接口描述

    生成图片缩略图链接。

    参数说明

    Android
    javapublic static String imageThumbUrl(String url,int thumbSize)
    
    参数名称 类型 是否必填 默认值 描述
    url String - 原始图片 URL 地址
    thumbSize Integer - 图片缩放的尺寸
    iOS
    objective-c+ (NSString *)imageThumbUrl:(NSString *)url
                      thumbSize:(NSInteger)thumbSize;
    
    参数名称 类型 是否必填 默认值 描述
    url NSString * - 原始图片 URL 地址
    thumbSize NSInteger - 图片缩放的尺寸
    Windows/macOS
    cppnstd::string v2::V2NIMStorageUtil::imageThumbUrl	(	const nstd::string & 	url,
                                                            int32_t 	thumbSize )	
    
    参数名称 类型 是否必填 默认值 描述
    url nstd::string - 原始图片 URL 地址
    thumbSize int32_t - 图片缩放的尺寸
    Web/uni-app/小程序
    typescriptimageThumbUrl(url: string, thumbSize: number): string
    
    参数名称 类型 是否必填 默认值 描述
    url string - 原始图片 URL 地址
    thumbSize number - 图片缩放的尺寸
    HarmonyOS
    typescriptimageThumbUrl(url: string, thumbSize: number): string
    
    参数名称 类型 是否必填 默认值 描述
    url string - 原始图片 URL 地址
    thumbSize number - 图片缩放的尺寸

    示例代码

    Android
    javaString url = "http://xxx.com/xxx.jpg";
    int thumbSize = 100;
    String imageThumbUrl = V2NIMStorageUtil.imageThumbUrl(url, thumbSize);
    
    iOS
    objective-c- (void)imageThumbUrl
    {
        V2NIMMessage *message = nil; // message
        V2NIMMessageImageAttachment *attachment = nil; // image attachment
        if ([message.attachment isKindOfClass:V2NIMMessageImageAttachment.class]) {
            attachment = (V2NIMMessageImageAttachment *)(message.attachment);
        }
        if (attachment) {
            NSInteger size = 100; // screen size
            size *= UIScreen.mainScreen.scale;
            // keep aspect ratio and width or height > size
            NSString *thumbUrl = [V2NIMStorageUtil imageThumbUrl:attachment.url thumbSize:size];
        }
    }
    
    Windows/macOS
    cppauto thumbURL= V2NIMStorageUtil::imageThumbUrl("image_url", 100);
    
    Web/uni-app/小程序
    typescriptconst url = nim.V2NIMStorageUtil.imageThumbUrl("https://host/path", 80)
    
    HarmonyOS
    typescriptconst url = nim.storageUtil.imageThumbUrl("https://host/path", 80)
    

    返回值

    thumbUrl:缩略图的 URL 地址。

    相关回调

    getImageThumbUrl

    接口描述

    获取图片消息中的图片缩略图链接。

    参数说明

    Android
    javavoid getImageThumbUrl(V2NIMMessageAttachment attachment, 
                        V2NIMSize thumbSize, 
                        V2NIMSuccessCallback<V2NIMGetMediaResourceInfoResult> success,
                        V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 默认值 描述
    attachment V2NIMMessageAttachment - 需要获取缩略图的附件对象。
    thumbSize V2NIMSize {150,0}
    内置默认值,不是在声明时指定的,而是运行时根据用户情况判断
    要获取的缩略图大小。
    success V2NIMSuccessCallback<V2NIMGetMediaResourceInfoResult> - 获取缩略图成功回调,返回 URL 地址。
    failure V2NIMFailureCallback - 获取缩略图失败回调,返回错误码
    iOS
    objective-c- (void)getImageThumbUrl:(V2NIMMessageAttachment *)attachment
                   thumbSize:(V2NIMSize *)thumbSize
                     success:(V2NIMGetImageThumbUrlSuccess)success
                     failure:(V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 默认值 描述
    attachment V2NIMMessageAttachment - 需要获取缩略图的附件对象。
    thumbSize V2NIMSize {150,0}
    内置默认值,不是在声明时指定的,而是运行时根据用户情况判断
    要获取的缩略图大小。
    success V2NIMGetImageThumbUrlSuccess - 获取缩略图成功回调,返回 URL 地址。
    failure V2NIMFailureCallback - 获取缩略图失败回调,返回错误码
    Windows/macOS
    c++virtual void v2::V2NIMStorageService::getImageThumbUrl	(
                    const nstd::shared_ptr< V2NIMMessageAttachment > & 	attachment,
                    const nstd::optional< V2NIMSize > & thumbSize,
                    const V2NIMSuccessCallback< const V2NIMGetMediaResourceInfoResult & > & success,
                    const V2NIMFailureCallback & 	failure 
    )	
    
    参数名称 类型 是否必填 默认值 描述
    attachment nstd::shared_ptr<V2NIMMessageAttachment> - 需要获取缩略图的附件对象。
    thumbSize nstd::optional<V2NIMSize> {150,0}
    内置默认值,不是在声明时指定的,而是运行时根据用户情况判断
    要获取的缩略图大小。
    success V2NIMSuccessCallback< const V2NIMGetMediaResourceInfoResult &> - 获取缩略图成功回调,返回 URL 地址。
    failure V2NIMFailureCallback - 获取缩略图失败回调,返回错误码
    Web/uni-app/小程序
    typescriptgetImageThumbUrl(attachment: V2NIMMessageAttachment, thumbSize: V2NIMSize): Promise<V2NIMGetMediaResourceInfoResult>
    
    参数名称 类型 是否必填 默认值 描述
    attachment V2NIMMessageAttachment - 需要获取缩略图的附件对象。
    thumbSize V2NIMSize {150,0}
    内置默认值,不是在声明时指定的,而是运行时根据用户情况判断
    要获取的缩略图大小。

    示例代码

    Android
    java// 从消息中获取附件,只能使用V2NIMMessageImageAttachment
    V2NIMMessageAttachment attachment = message.getAttachment();
    // 指定图片大小。0表示该维度不限制
    V2NIMSize thumbSize = new V2NIMSize();
    thumbSize.setWidth(100);
    thumbSize.setHeight(0);
    
    NIMClient.getService(V2NIMStorageService.class).getImageThumbUrl(attachment, thumbSize, s -> {
        // 获取成功
    }, f -> {
        // 获取失败
    });
    
    iOS
    objective-c// 从消息中获取附件,只能使用V2NIMMessageImageAttachment
    V2NIMMessageAttachment *attachment = message.attachment;
    // 指定图片大小。0表示该维度不限制
    V2NIMSize *thumbSize = [[V2NIMSize alloc] initWithWidth:100 height:0];
    
    [[NIMSDK sharedSDK].v2StorageService getImageThumbUrl:attachment thumbSize:thumbSize success:^(V2NIMGetMediaResourceInfoResult *result) {
        // 获取成功
    } failure:^(V2NIMError *error) {
        // 获取失败
    }];
    
    Windows/macOS
    c++storageService.getImageThumbUrl(attachment, V2NIMSize(150, 150), [](const V2NIMGetMediaResourceInfoResult& result) {
            // get image thumb url succeeded
        }, [](V2NIMError error) {
            // get image thumb url failed, handle error
        });
    
    Web/uni-app/小程序
    typescript/**
       * 生成图片缩略链接
       *
       * ESM 模式时,需要动态引入 V2NIMStorageUtil 后使用:
       * NIM.registerService(V2NIMStorageUtil, 'V2NIMStorageUtil')
       *
       * 使用示例: nim.V2NIMStorageService.getImageThumbUrl(attachment, { width: 100, height: 100 })
       */
      getImageThumbUrl(attachment: V2NIMMessageAttachment, thumbSize: V2NIMSize): Promise<V2NIMGetMediaResourceInfoResult>
    

    返回值

    Android/iOS/Windows/macOS

    Web/uni-app/小程序

    Promise<V2NIMGetMediaResourceInfoResult>

    相关回调

    Android/Windows/macOS
    • 请求成功,返回 V2NIMSuccessCallback<V2NIMGetMediaResourceInfoResult> 回调,包含附件下载路径。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含存储服务相关错误码。
    iOS
    • 请求成功,返回 V2NIMGetImageThumbUrlSuccess 回调,包含附件下载路径。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含存储服务相关错误码。
    Web/uni-app/小程序

    videoCoverUrl

    接口描述

    生成视频封面图链接。

    参数说明

    Android
    javapublic static String videoCoverUrl(String url,int offset)
    
    参数名称 类型 是否必填 默认值 描述
    url String - 原始视频 URL 地址
    offset Integer - 指定视频的目标封面所在时间,即从第几秒开始取封面
    iOS
    objective-c+ (NSString *)videoCoverUrl:(NSString *)url
                         offset:(NSInteger)offset;
    
    参数名称 类型 是否必填 默认值 描述
    url NSString * - 原始视频 URL 地址
    offset NSInteger - 指定视频的目标封面所在时间,即从第几秒开始取封面
    Windows/macOS
    cppnstd::string v2::V2NIMStorageUtil::videoCoverUrl	(	const nstd::string & 	url,
                                                            int32_t 	offset,
                                                            int32_t 	thumbSize,
                                                            const nstd::string & 	type )	
    
    参数名称 类型 是否必填 默认值 描述
    url nstd::string - 原始视频 URL 地址
    offset int32_t - 指定视频的目标封面所在时间,即从第几秒开始取封面
    thumbSize int32_t - 视频封面的尺寸,单位像素
    type nstd::string - 视频封面的类型,如 png,jpeg
    Web/uni-app/小程序
    typescriptvideoCoverUrl(url: string, offset: number): string
    
    参数名称 类型 是否必填 默认值 描述
    url string - 原始视频 URL 地址
    offset number - 指定视频的目标封面所在时间,即从第几秒开始取封面
    HarmonyOS
    typescriptvideoCoverUrl(url: string, offset: number): string
    
    参数名称 类型 是否必填 默认值 描述
    url string - 原始视频 URL 地址
    offset number - 指定视频的目标封面所在时间,即从第几秒开始取封面

    示例代码

    Android
    javaString url = "http://xxx.com/xxx.jpg";
    int offset = 0;
    String videoCoverUrl = V2NIMStorageUtil.videoCoverUrl(url, offset);
    
    iOS
    objective-c- (void)videoCoverUrl
    {
        V2NIMMessage *message = nil; // message
        V2NIMMessageVideoAttachment *attachment = nil; // video attachment
        if ([message.attachment isKindOfClass:V2NIMMessageVideoAttachment.class]) {
            attachment = (V2NIMMessageVideoAttachment *)(message.attachment);
        }
        if (attachment) {
            NSInteger offset = 0; // start of video
            NSString *coverUrl = [V2NIMStorageUtil videoCoverUrl:attachment.url offset:offset];
        }
    }
    
    Windows/macOS
    cppauto coverURL = V2NIMStorageUtil::videoCoverUrl("video_url", 0, 150, "png");
    
    Web/uni-app/小程序
    typescriptconst url = nim.V2NIMStorageUtil.videoCoverUrl("https://host/path", 0)
    
    HarmonyOS
    typescriptconst url = nim.storageUtil.videoCoverUrl("https://host/path", 0)
    

    返回值

    coverUrl:封面图的 URL 地址。

    相关回调

    getVideoCoverUrl

    接口描述

    获取视频消息中的视频封面链接。

    参数说明

    Android
    javavoid getVideoCoverUrl(V2NIMMessageAttachment attachment, 
                          V2NIMSize thumbSize, 
                          V2NIMSuccessCallback<V2NIMGetMediaResourceInfoResult> success,
                          V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 默认值 描述
    attachment V2NIMMessageAttachment - 需要获取视频封面的附件对象。
    thumbSize V2NIMSize {150,0}
    内置默认值,不是在声明时指定的,而是运行时根据用户情况判断
    要获取的视频封面大小。
    success V2NIMSuccessCallback<V2NIMGetMediaResourceInfoResult> - 获取视频封面成功回调,返回 URL 地址。
    failure V2NIMFailureCallback - 获取视频封面失败回调,返回错误码
    iOS
    objective-c- (void)getVideoCoverUrl:(V2NIMMessageAttachment *)attachment
                   thumbSize:(V2NIMSize *)thumbSize
                     success:(V2NIMGetVideoCoverUrlSuccess)success
                     failure:(V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 默认值 描述
    attachment V2NIMMessageAttachment - 需要获取视频封面的附件对象。
    thumbSize V2NIMSize {150,0}
    内置默认值,不是在声明时指定的,而是运行时根据用户情况判断
    要获取的视频封面大小。
    success V2NIMGetVideoCoverUrlSuccess - 获取视频封面成功回调,返回 URL 地址。
    failure V2NIMFailureCallback - 获取视频封面失败回调,返回错误码
    Windows/macOS
    c++virtual void v2::V2NIMStorageService::getVideoCoverUrl	(	const nstd::shared_ptr< V2NIMMessageAttachment > & 	attachment,
    const nstd::optional< V2NIMSize > & 	thumbSize,
    const V2NIMSuccessCallback< const V2NIMGetMediaResourceInfoResult & > & 	success,
    const V2NIMFailureCallback & 	failure 
    )	
    
    参数名称 类型 是否必填 默认值 描述
    attachment nstd::shared_ptr<V2NIMMessageAttachment> - 需要获取视频封面的附件对象。
    thumbSize nstd::optionalV2NIMSize> {150,0}
    内置默认值,不是在声明时指定的,而是运行时根据用户情况判断
    要获取的视频封面大小。
    success V2NIMSuccessCallback< constV2NIMGetMediaResourceInfoResult &> - 获取视频封面成功回调,返回 URL 地址。
    failure V2NIMFailureCallback - 获取视频封面失败回调,返回错误码
    Web/uni-app/小程序
    typescriptgetVideoCoverUrl(attachment: V2NIMMessageAttachment, thumbSize: V2NIMSize): Promise<V2NIMGetMediaResourceInfoResult>
    
    参数名称 类型 是否必填 默认值 描述
    attachment V2NIMMessageAttachment - 需要获取视频封面的附件对象。
    thumbSize V2NIMSize {150,0}
    内置默认值,不是在声明时指定的,而是运行时根据用户情况判断
    要获取的视频封面大小。

    示例代码

    Android
    java// 从消息中获取附件,只能使用V2NIMMessageVideoAttachment
    V2NIMMessageAttachment attachment = message.getAttachment();
    // 指定图片大小。0表示该维度不限制
    V2NIMSize thumbSize = new V2NIMSize();
    thumbSize.setWidth(100);
    thumbSize.setHeight(0);
    
    NIMClient.getService(V2NIMStorageService.class).getVideoCoverUrl(attachment, thumbSize, s -> {
        // 获取成功
    }, f -> {
        // 获取失败
    });
    
    iOS
    objective-c// 从消息中获取附件,只能使用V2NIMMessageVideoAttachment
    V2NIMMessageAttachment *attachment = message.attachment;
    // 指定图片大小。0表示该维度不限制
    V2NIMSize *thumbSize = [[V2NIMSize alloc] initWithWidth:100 height:0];
    
    [[NIMSDK sharedSDK].v2StorageService getVideoCoverUrl:attachment thumbSize:thumbSize success:^(V2NIMGetMediaResourceInfoResult *result) {
        // 获取成功
    } failure:^(V2NIMError *error) {
        // 获取失败
    }];
    
    Windows/macOS
    c++storageService.getVideoCoverUrl(attachment, V2NIMSize(150, 150), [](const V2NIMGetMediaResourceInfoResult& result) {
           // get video cover url succeeded
       }, [](V2NIMError error) {
           // get video cover url failed, handle error
       });
    
    Web/uni-app/小程序
    typescript /**
       * 生成视频封面图链接
       *
       * ESM 模式时,需要动态引入 V2NIMStorageUtil 后使用:
       * NIM.registerService(V2NIMStorageUtil, 'V2NIMStorageUtil')
       *
       * 使用示例: nim.V2NIMStorageService.getVideoCoverUrl(attachment, { width: 100, height: 100 })
       */
      getVideoCoverUrl(attachment: V2NIMMessageAttachment, thumbSize: V2NIMSize): Promise<V2NIMGetMediaResourceInfoResult>
    

    返回值

    Android/iOS/Windows/macOS

    Web/uni-app/小程序

    Promise<V2NIMGetMediaResourceInfoResult>

    相关回调

    Android/Windows/macOS
    • 请求成功,返回 V2NIMSuccessCallback<V2NIMGetMediaResourceInfoResult> 回调,包含附件下载路径。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含存储服务相关错误码。
    iOS
    • 请求成功,返回 V2NIMGetVideoCoverUrlSuccess 回调,包含附件下载路径。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含存储服务相关错误码。
    Web/uni-app/小程序

    downloadAttachment

    接口描述

    下载消息附件。

    若附件已经下载成功,则直接回调下载成功,返回下载路径(path)。

    下载路径规则如下:

    • 若用户指定下载路径(downloadParam.saveAs),则始终以用户指定的为准;
    • 若用户 未指定 下载路径,但附件(attachment)中有路径(path)信息,则以 attachment.path 为准;
    • 若用户 未指定 下载路径,且附件(attachment)为空,则使用用户缓存目录。

    参数说明

    Android
    java/**
     * 下载消息附件
     *
     * @param downloadParam 下载参数
     * @param success       下载消息附件成功回调
     * @param failure       下载消息附件失败回调
     * @param progress      下载消息附件进度回调
     */
    void downloadAttachment(V2NIMDownloadMessageAttachmentParams downloadParam,                       
                            V2NIMSuccessCallback<String> success,
                            V2NIMFailureCallback failure, 
                            V2NIMProgressCallback progress);
    
    参数名称 类型 是否必填 默认值 描述
    downloadParam V2NIMDownloadMessageAttachmentParams - 下载附件的配置参数。
    success V2NIMSuccessCallback<String> - 下载消息附件成功回调。
    failure V2NIMFailureCallback - 下载消息附件失败回调,返回错误码
    progress V2NIMProgressCallback - 下载消息附件进度回调。
    iOS
    objective-c- (void) downloadAttachment:	(V2NIMDownloadMessageAttachmentParams *) 	downloadParam
                        success:		(V2NIMDownloadAttachmentSuccess) 	success
                        failure:		(V2NIMFailureCallback) 	failure
                       progress:		(nullable V2NIMProgressCallback) 	progress 
    
    参数名称 类型 是否必填 默认值 描述
    downloadParam V2NIMDownloadMessageAttachmentParams - 下载附件的配置参数。
    success V2NIMDownloadAttachmentSuccess - 下载消息附件成功回调,可自定义。
    failure V2NIMFailureCallback - 下载消息附件失败回调,返回错误码
    progress V2NIMProgressCallback - 下载消息附件进度回调。
    Windows/macOS
    c++virtual void v2::V2NIMStorageService::downloadAttachment(const V2NIMDownloadMessageAttachmentParams & 	downloadParam,
                                                             const V2NIMSuccessCallback< const nstd::string & > & 	success,
                                                             const V2NIMFailureCallback & 	failure,
                                                             const V2NIMProgressCallback & 	progress 
    )	
    
    参数名称 类型 是否必填 默认值 描述
    downloadParam V2NIMDownloadMessageAttachmentParams - 下载附件的配置参数。
    success V2NIMSuccessCallback< const nstd::string & > - 下载消息附件成功回调。
    failure V2NIMFailureCallback - 下载消息附件失败回调,返回错误码
    progress V2NIMProgressCallback - 下载消息附件进度回调。

    示例代码

    Android
    java// 从消息中获取附件
    // 只有V2NIMMessageFileAttachment及其子类可以用于下载原始资源
    // 只有V2NIMMessageImageAttachment可以用于下载缩略图
    // 只有V2NIMMessageVideoAttachment可以用于下载视频封面
    V2NIMMessageAttachment attachment = message.getAttachment();
    // 下载缩略图。
    // 下载原始资源使用V2NIM_DOWNLOAD_ATTACHMENT_TYPE_SOURCE、下载视频封面使用V2NIM_DOWNLOAD_ATTACHMENT_TYPE_VIDEO_COVER
    V2NIMDownloadAttachmentType type = V2NIMDownloadAttachmentType.V2NIM_DOWNLOAD_ATTACHMENT_TYPE_THUMBNAIL;
    // 下载缩略图或者视频封面时,指定图片大小。0表示该维度不限制
    V2NIMSize thumbSize = new V2NIMSize();
    thumbSize.setWidth(100);
    thumbSize.setHeight(0);
    // 填写对应消息的端侧ID,使得下载完成后替换附件中的路径
    String messageClientId = message.getMessageClientId();
    // 指定文件的存储路径
    String saveAs = "path/to/save";
    
    V2NIMDownloadMessageAttachmentParams downloadParam = new V2NIMDownloadMessageAttachmentParams.V2NIMDownloadMessageAttachmentParamsBuilder(attachment)
            .type(type)
            .thumbSize(thumbSize)
            .messageClientId(messageClientId)
            .saveAs(saveAs).build();
    NIMClient.getService(V2NIMStorageService.class).downloadAttachment(downloadParam, s -> {
        // 下载成功
    }, f -> {
        // 下载失败
    }, progress -> {
        // 下载进度变更
    });
    
    iOS
    objective-c// 从消息中获取附件
    // 只有V2NIMMessageFileAttachment及其子类可以用于下载原始资源
    // 只有V2NIMMessageImageAttachment可以用于下载缩略图
    // 只有V2NIMMessageVideoAttachment可以用于下载视频封面
    V2NIMMessageAttachment *attachment = message.attachment;
    V2NIMDownloadMessageAttachmentParams *downloadParams = [[V2NIMDownloadMessageAttachmentParams alloc] initWithAttachment:attachment];
    // 下载缩略图。
    // 下载原始资源使用V2NIM_DOWNLOAD_ATTACHMENT_TYPE_SOURCE、下载视频封面使用V2NIM_DOWNLOAD_ATTACHMENT_TYPE_VIDEO_COVER
    downloadParams.type = V2NIM_DOWNLOAD_ATTACHMENT_TYPE_THUMBNAIL;
    // 下载缩略图或者视频封面时,指定图片大小。0表示该维度不限制
    downloadParams.thumbSize = [[V2NIMSize alloc] initWithWidth:100 height:0];
    // 填写对应消息的端侧ID,使得下载完成后替换附件中的路径
    downloadParams.messageClientId = message.messageClientId;
    // 指定文件的存储路径
    downloadParams.saveAs = @"path/to/save";
    
    [[NIMSDK sharedSDK].v2StorageService downloadAttachment:attachment success:^(NSString *filePath) {
        // 下载成功
    } failure:^(V2NIMError *error) {
        // 下载失败
    } progress:^(NSUInteger progress) {
        // 下载进度变更
    }];
    
    Windows/macOS
    c++V2NIMDownloadMessageAttachmentParams downloadParam;
    downloadParam.attachment = attachment;
    downloadParam.type = V2NIM_DOWNLOAD_ATTACHMENT_TYPE_SOURCE;
    storageService.downloadAttachment(
        downloadParam,
        [](const nstd::string& path) {
            // download attachment succeeded
        },
        [](V2NIMError error) {
            // download attachment failed, handle error
        },
        [](uint32_t progress) {
            // download progress
        });
    

    返回值

    相关回调

    Android/Windows/macOS
    • 请求成功,返回 V2NIMSuccessCallback 回调,包含附件下载路径。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含存储服务相关错误码。
    • 返回 V2NIMProgressCallback 回调,包含附件下载进度。
    iOS
    • 请求成功,返回 V2NIMDownloadAttachmentSuccess 回调,包含附件下载路径。
    • 请求失败,返回 V2NIMFailureCallback 回调,包含存储服务相关错误码。
    • 返回 V2NIMProgressCallback 回调,包含附件下载进度。
    此文档是否对你有帮助?
    有帮助
    去反馈
    • 支持平台
    • API 概览
    • 接口类
    • addCustomStorageScene
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值
    • 相关回调
    • getStorageSceneList
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值
    • 相关回调
    • createUploadFileTask
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值
    • 相关回调
    • uploadFile
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值
    • 相关回调
    • cancelUploadFile
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值
    • 相关回调
    • downloadFile
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值
    • 相关回调
    • shortUrlToLong
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值
    • 相关回调
    • imageThumbUrl
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值
    • 相关回调
    • getImageThumbUrl
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值
    • 相关回调
    • videoCoverUrl
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值
    • 相关回调
    • getVideoCoverUrl
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值
    • 相关回调
    • downloadAttachment
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值
    • 相关回调