存储服务

更新时间: 2024/05/11 15:09:08

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

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

支持平台

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

API 概览

API 描述 起始版本
addCustomStorageScene 添加自定义存储场景 v10.2.0(对应 Harmony v0.5.0)
getStorageSceneList 获取存储场景列表 v10.2.0(对应 Harmony v0.5.0)
createUploadFileTask 创建文件上传任务 v10.2.0(对应 Harmony v0.5.0)
uploadFile 上传文件 v10.2.0(对应 Harmony v0.5.0)
cancelUploadFile 取消文件上传 v10.2.0(对应 Harmony v0.5.0)
downloadFile 下载文件(仅移动端) v10.2.3
shortUrlToLong 短链接转长链接 v10.2.3
imageThumbUrl 生成图片缩略图链接(仅Android&iOS&Web) v10.2.6
videoCoverUrl 生成视频封面图链接(仅Android&iOS&Web) v10.2.6

接口类

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 表示永不过期。
Harmony
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)
Harmony
typescriptnim.storageService.addCustomStorageScene("nim", 86400)

返回值

Android/Web/Harmony
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[]
Harmony
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()
Harmony
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 - 文件上传参数
Harmony
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]
}})
Harmony
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 文件上传进度回调
Harmony
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)   
})
Harmony
typescriptnim.storageService.uploadFile(task, function onProgress(progress) {
 console.log('uploadFile progress: ', progress)   
})

返回值

Android/iOS/macOS/Windows

无返回值

Web/uni-app/小程序/Harmony

Promise<string> 文件 URL 地址

相关回调

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

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 - 需要取消的文件上传任务
Harmony
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)
Harmony
typescriptnim.storageService.cancelUploadFile(task)

返回值

Android/iOS/macOS/Windows

无返回值

Web/uni-app/小程序/Harmony

Promise<void>

相关回调

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

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 文件下载进度回调

示例代码

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) {
    // 进度回调
}]; 

返回值

相关回调

  • 请求成功,返回 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 - 链接转换成功失败回调,返回错误码
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) {
    // 失败回调
}];
Web/uni-app/小程序
typescriptvar shortUrl = "https://s.netease.im/safe/AAAAAAAAAAAAAAAAAAAAAAAAAAA?_im_url=1";
var originUrl = await nim.V2NIMStorageService.shortUrlToLong(shortUrl)

返回值

相关回调

Android
  • 请求成功,返回 V2NIMSuccessCallback 回调。
  • 请求失败,返回 V2NIMFailureCallback 回调,包含存储相关错误码。
iOS
  • 请求成功,返回 V2NIMShortUrlToLongSuccess 回调,可自定义设置。
  • 请求失败,返回 V2NIMFailureCallback 回调,包含存储相关错误码。

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 - 图片缩放的尺寸
Web/uni-app/小程序
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];
    }
}
Web/uni-app/小程序
typescriptconst url = nim.V2NIMStorageUtil.imageThumbUrl("https://host/path", 80)

返回值

thumbUrl:缩略图的 URL 地址。

相关回调

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 - 指定视频的目标封面所在时间,即从第几秒开始取封面
Web/uni-app/小程序
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];
    }
}
Web/uni-app/小程序
typescriptconst url = nim.V2NIMStorageUtil.videoCoverUrl("https://host/path", 0)

返回值

coverUrl:封面图的 URL 地址。

相关回调

此文档是否对你有帮助?
有帮助
去反馈
  • 支持平台
  • API 概览
  • 接口类
  • addCustomStorageScene
  • 接口描述
  • 参数说明
  • 示例代码
  • 返回值
  • 相关回调
  • getStorageSceneList
  • 接口描述
  • 参数说明
  • 示例代码
  • 返回值
  • 相关回调
  • createUploadFileTask
  • 接口描述
  • 参数说明
  • 示例代码
  • 返回值
  • 相关回调
  • uploadFile
  • 接口描述
  • 参数说明
  • 示例代码
  • 返回值
  • 相关回调
  • cancelUploadFile
  • 接口描述
  • 参数说明
  • 示例代码
  • 返回值
  • 相关回调
  • downloadFile
  • 接口描述
  • 参数说明
  • 示例代码
  • 返回值
  • 相关回调
  • shortUrlToLong
  • 接口描述
  • 参数说明
  • 示例代码
  • 返回值
  • 相关回调
  • imageThumbUrl
  • 接口描述
  • 参数说明
  • 示例代码
  • 返回值
  • 相关回调
  • videoCoverUrl
  • 接口描述
  • 参数说明
  • 示例代码
  • 返回值
  • 相关回调