存储服务
更新时间: 2024/09/18 11:27:21
网易云信即时通讯 SDK(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 | 下载文件 | |
shortUrlToLong | 短链接转长链接 | |
imageThumbUrl | 生成图片缩略图链接 | |
videoCoverUrl | 生成视频封面图链接 | |
downloadAttachment | 下载消息附件。 | v10.3.0 |
getImageThumbUrl | 获取图片消息中的缩略图链接。 | v10.3.0 |
getVideoCoverUrl | 获取视频消息中的视频封面链接。 | v10.3.0 |
接口类
V2NIMStorageService
类提供存储服务相关接口。
addCustomStorageScene
接口描述
添加自定义存储场景。
该方法为同步。
参数说明
JavaV2NIMStorageScene addCustomStorageScene(String sceneName, long expireTime);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
sceneName |
String | 是 | 自定义场景名 |
expireTime |
long | 是 | 过期时间(秒),0 表示永不过期。 |
Objective-C- (void)addCustomStorageScene:(NSString *)sceneName expireTime:(NSUInteger)expireTime;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
sceneName |
NSString * | 是 | 自定义场景名 |
expireTime |
NSUInteger | 是 | 过期时间(秒),0 表示永不过期。 |
C++virtual void addCustomStorageScene(nstd::string sceneName, uint64_t expireTime) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
sceneName |
nstd::string | 是 | 自定义场景名 |
expireTime |
uint64_t | 是 | 过期时间(秒),0 表示永不过期。 |
TypeScriptaddCustomStorageScene(sceneName: string, expireTime: number): V2NIMStorageScene
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
sceneName |
string | 是 | 自定义场景名 |
expireTime |
number | 是 | 过期时间(秒),0 表示永不过期。 |
TypeScriptaddCustomStorageScene(sceneName: string, expireTime: number): V2NIMStorageScen
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
sceneName |
string | 是 | 自定义场景名 |
expireTime |
number | 是 | 过期时间(秒),0 表示永不过期。 |
示例代码
JavaV2NIMStorageService v2StorageService = NIMClient.getService(V2NIMStorageService.class);
v2StorageService.addCustomStorageScene(sceneName, expireTime);
Objective-C[[[NIMSDK sharedSDK] v2StorageService] addCustomStorageScene:@"scene_name" expireTime:1000];
C++storageService.addCustomStorageScene("customScene", 0); // never expire
TypeScriptnim.V2NIMStorageService.addCustomStorageScene("nim", 86400)
TypeScriptnim.storageService.addCustomStorageScene("nim", 86400)
返回参数
无。
相关回调
无。
getStorageSceneList
接口描述
获取存储场景列表。
该方法为同步。
参数说明
JavaList<V2NIMStorageScene> getStorageSceneList();
Objective-C- (NSArray<V2NIMStorageScene *> *)getStorageSceneList;
C++virtual nstd::vector<V2NIMStorageScene> getStorageSceneList() = 0;
TypeScriptgetStorageSceneList(): V2NIMStorageScene[]
TypeScriptgetStorageSceneList(): V2NIMStorageScene[]
示例代码
JavaV2NIMStorageService v2StorageService = NIMClient.getService(V2NIMStorageService.class);
List<V2NIMStorageScene> storageSceneList = v2StorageService.getStorageSceneList();
Objective-C[[[NIMSDK sharedSDK] v2StorageService] getStorageSceneList];
C++auto sceneList = storageService.getStorageSceneList();
TypeScriptconst sceneList = nim.V2NIMStorageService.getStorageSceneList()
TypeScriptconst sceneList = nim.storageService.getStorageSceneList()
返回参数
相关回调
无。
createUploadFileTask
接口描述
创建文件上传任务。
该方法为同步。
参数说明
JavaV2NIMUploadFileTask createUploadFileTask(V2NIMUploadFileParams params);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
params |
V2NIMUploadFileParams |
是 | 文件上传参数 |
Objective-C- (V2NIMUploadFileTask *)createUploadFileTask:(V2NIMUploadFileParams *)fileParams;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
params |
V2NIMUploadFileParams * |
是 | 文件上传参数 |
C++virtual V2NIMUploadFileTask createUploadFileTask(V2NIMUploadFileParams fileParams) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
params |
V2NIMUploadFileParams |
是 | 文件上传参数 |
TypeScriptcreateUploadFileTask(fileParams: V2NIMUploadFileParams): V2NIMUploadFileTask
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
fileParams |
V2NIMUploadFileParams |
是 | 文件上传参数 |
TypeScriptcreateUploadFileTask(fileParams: V2NIMUploadFileParams): V2NIMUploadFileTask
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
fileParams |
V2NIMUploadFileParams |
是 | 文件上传参数 |
示例代码
JavaV2NIMStorageService v2StorageService = NIMClient.getService(V2NIMStorageService.class);
V2NIMUploadFileParams params = new V2NIMUploadFileParams("filePath")
V2NIMUploadFileTask uploadFileTask = v2StorageService.createUploadFileTask(params);
Objective-CV2NIMUploadFileParams *fileParams = [[V2NIMUploadFileParams alloc] init];
fileParams.filePath = @"filePath";
[[[NIMSDK sharedSDK] v2StorageService] createUploadFileTask:fileParams];
C++V2NIMUploadFileParams fileParams;
fileParams.filePath = "~/test.txt";
fileParams.name = "hello.txt";
fileParams.scene = "customScene";
auto uploadTask = storageService.createUploadFileTask(fileParams);
TypeScriptconst task = nim.V2NIMStorageService.createUploadFileTask({
fileObj: document.getElementById('input-id').files[0]
}})
TypeScriptconst params:V2NIMUploadFileParams = {
filePath: '文件沙盒路径',
sceneName: '场景名'
} as V2NIMUploadFileParams
const task = nim.storageService.createUploadFileTask(params)
返回参数
相关回调
无。
uploadFile
接口描述
上传文件。
参数说明
Javavoid uploadFile(V2NIMUploadFileTask fileTask, V2NIMSuccessCallback<String> success,
V2NIMFailureCallback failure,
V2NIMProgressCallback progress);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
fileTask |
V2NIMUploadFileTask |
是 | 文件上传任务对象 |
success |
V2NIMSuccessCallback |
是 | 上传成功回调,返回文件 URL 地址。 |
failure |
V2NIMFailureCallback |
是 | 上传失败回调,返回 错误码。 |
progress |
V2NIMProgressCallback |
否 | 文件上传进度回调 |
Objective-C- (void)uploadFile:(V2NIMUploadFileTask *)fileTask
success:(V2NIMFileUploadSuccess)success
failure:(V2NIMFileUploadFailure)failure
progress:(V2NIMFileUploadProgress)progress;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
fileTask |
V2NIMUploadFileTask * |
是 | 文件上传任务对象 |
success |
V2NIMFileUploadSuccess |
是 | 上传成功回调,可自定义设置。 |
failure |
V2NIMFileUploadFailure |
是 | 上传失败回调,可自定义设置。 |
progress |
V2NIMProgressCallback |
否 | 文件上传进度回调 |
C++virtual void uploadFile(V2NIMUploadFileTask fileTask,
V2NIMSuccessCallback<nstd::string> success,
V2NIMFailureCallback failure,
V2NIMProgressCallback progress) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
fileTask |
V2NIMUploadFileTask |
是 | 文件上传任务对象 |
success |
V2NIMSuccessCallback |
是 | 上传成功回调,返回文件 URL 地址。 |
failure |
V2NIMFailureCallback |
是 | 上传失败回调,返回 错误码。 |
progress |
V2NIMProgressCallback |
否 | 文件上传进度回调 |
TypeScriptuploadFile(fileTask: V2NIMUploadFileTask, progress: V2NIMProgressCallback): Promise<string>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
fileTask |
V2NIMUploadFileTask |
是 | 文件上传任务对象 |
progress |
V2NIMProgressCallback |
否 | 文件上传进度回调 |
TypeScriptuploadFile(fileTask: V2NIMUploadFileTask, progress: V2NIMProgressCallback): Promise<string>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
fileTask |
V2NIMUploadFileTask |
是 | 文件上传任务对象 |
progress |
V2NIMProgressCallback |
否 | 文件上传进度回调 |
示例代码
JavaV2NIMStorageService v2StorageService = NIMClient.getService(V2NIMStorageService.class);
v2StorageService.uploadFile(task, (V2NIMSuccessCallback<String>) s -> {
// 上传成功
}, (V2NIMFailureCallback) error -> {
// 上传失败
}, (V2NIMProgressCallback) progress -> {
// 上传进度
});
Objective-C[[[NIMSDK sharedSDK] v2StorageService] uploadFile:fileTask success:^(NSString * _Nonnull urlString) {
// 上传成功
} failure:^(V2NIMError * _Nonnull error) {
// 上传失败
} progress:^(float progress) {
// 上传进度
}];
C++V2NIMUploadFileParams 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
});
TypeScriptnim.V2NIMStorageService.uploadFile(task, function onProgress(progress) {
console.log('uploadFile progress: ', progress)
})
TypeScriptnim.storageService.uploadFile(task, function onProgress(progress) {
console.log('uploadFile progress: ', progress)
})
返回参数
无返回值。
Promise<string> 文件 URL 地址
相关回调
- 请求成功,返回
V2NIMSuccessCallback
回调,包含文件 URL 地址。 - 请求失败,返回
V2NIMFailureCallback
回调,包含存储相关错误码。
- 请求成功,返回
V2NIMFileUploadSuccess
回调,可自定义设置。 - 请求失败,返回
V2NIMFileUploadFailure
回调,可自定义设置。
无。
cancelUploadFile
接口描述
取消文件上传。
参数说明
Javavoid cancelUploadFile(V2NIMUploadFileTask fileTask, V2NIMSuccessCallback<Void> success,
V2NIMFailureCallback failure);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
fileTask |
V2NIMUploadFileTask |
是 | 需要取消的文件上传任务 |
success |
V2NIMSuccessCallback |
是 | 取消成功回调 |
failure |
V2NIMFailureCallback |
是 | 取消失败回调,返回 错误码。 |
Objective-C- (void)cancelUploadFile:(V2NIMUploadFileTask *)fileTask
success:(V2NIMSuccessCallback)success
failure:(V2NIMFailureCallback)failure;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
fileTask |
V2NIMUploadFileTask |
是 | 需要取消的文件上传任务 |
success |
V2NIMSuccessCallback |
是 | 取消成功回调 |
failure |
V2NIMFailureCallback |
是 | 取消失败回调,返回 错误码。 |
C++virtual void cancelUploadFile(V2NIMUploadFileTask fileTask, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
fileTask |
V2NIMUploadFileTask |
是 | 需要取消的文件上传任务 |
success |
V2NIMSuccessCallback |
是 | 取消成功回调 |
failure |
V2NIMFailureCallback |
是 | 取消失败回调,返回 错误码。 |
TypeScriptcancelUploadFile(fileTask: V2NIMUploadFileTask): Promise<void>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
fileTask |
V2NIMUploadFileTask |
是 | 需要取消的文件上传任务 |
TypeScriptcancelUploadFile(fileTask: V2NIMUploadFileTask): Promise<void>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
fileTask |
V2NIMUploadFileTask |
是 | 需要取消的文件上传任务 |
示例代码
JavaV2NIMStorageService v2StorageService = NIMClient.getService(V2NIMStorageService.class);
v2StorageService.cancelUploadFile(task, (V2NIMSuccessCallback<Void>) s -> {
// 取消成功
}, (V2NIMFailureCallback) error -> {
// 取消失败
});
Objective-C[[[NIMSDK sharedSDK] v2StorageService] cancelUploadFile:fileTask success:^{
//取消成功
} failure:^(V2NIMError * _Nonnull error) {
//取消失败
}];
C++V2NIMUploadFileTask fileTask;
// uploadFile
// ...
storageService.cancelUploadFile(
fileTask,
[]() {
// cancel upload file succeeded
},
[](V2NIMError error) {
// cancel upload file failed, handle error
});
TypeScriptnim.V2NIMStorageService.cancelUploadFile(task)
TypeScriptnim.storageService.cancelUploadFile(task)
返回参数
无返回值。
Promise<void>
相关回调
- 请求成功,返回
V2NIMSuccessCallback
回调。 - 请求失败,返回
V2NIMFailureCallback
回调,包含存储相关错误码。
无。
downloadFile
接口描述
下载文件。
参数说明
Javavoid downloadFile(String url, String filePath, V2NIMSuccessCallback<String> success,
V2NIMFailureCallback failure, V2NIMProgressCallback progress);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
String | 是 | 文件 URL 地址 |
filePath |
String | 是 | 文件本地存储路径 |
success |
V2NIMSuccessCallback |
是 | 下载成功回调 |
failure |
V2NIMFailureCallback |
是 | 下载失败回调,返回 错误码。 |
progress |
V2NIMProgressCallback |
否 | 文件下载进度回调 |
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 |
否 | 文件下载进度回调 |
C++virtual 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 |
否 | 文件下载进度回调 |
示例代码
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) {
// 下载进度
}
});
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) {
// 进度回调
}];
C++storageService.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
接口描述
短链接转长链接。
参数说明
Javavoid shortUrlToLong(String url, V2NIMSuccessCallback<String> success,
V2NIMFailureCallback failure);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
String | 是 | 文件 URL 地址 |
success |
V2NIMSuccessCallback |
是 | 链接转换成功成功回调 |
failure |
V2NIMFailureCallback |
是 | 链接转换成功失败回调,返回错误码 |
Objective-C- (void)shortUrlToLong:(NSString *)url
success:(V2NIMShortUrlToLongSuccess)success
failure:(V2NIMFailureCallback)failure;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
NSString * | 是 | 文件 URL 地址 |
success |
V2NIMShortUrlToLongSuccess |
是 | 链接转换成功成功回调,可自定义设置。 |
failure |
V2NIMFailureCallback |
是 | 链接转换成功失败回调,返回错误码 |
C++virtual void v2::V2NIMStorageService::shortUrlToLong (" const nstd::string & url,
V2NIMSuccessCallback< nstd::string > success,
V2NIMFailureCallback failure )
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
nstd::string | 是 | 文件 URL 地址 |
success |
V2NIMSuccessCallback |
是 | 链接转换成功成功回调 |
failure |
V2NIMFailureCallback |
是 | 链接转换成功失败回调,返回错误码 |
TypeScriptshortUrlToLong(url: string): Promise<string>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
string | 是 | 文件 URL 地址 |
示例代码
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) {
// 转换失败
}
});
Objective-C// 按需传入短链
NSString *shortUrl = @"https://s.netease.im/safe/AAAAAAAAAAAAAAAAAAAAAAAAAAA?_im_url=1";
[[NIMSDK sharedSDK].v2StorageService shortUrlToLong:shortUrl success:^(NSString *url) {
// 成功回调
} failure:^(V2NIMError *error) {
// 失败回调
}];
C++storageService.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
});
TypeScriptvar shortUrl = "https://s.netease.im/safe/AAAAAAAAAAAAAAAAAAAAAAAAAAA?_im_url=1";
var originUrl = await nim.V2NIMStorageService.shortUrlToLong(shortUrl)
返回参数
无。
Promise<string>
相关回调
- 请求成功,返回
V2NIMSuccessCallback
回调。 - 请求失败,返回
V2NIMFailureCallback
回调,包含存储相关错误码。
- 请求成功,返回
V2NIMShortUrlToLongSuccess
回调,可自定义设置。 - 请求失败,返回
V2NIMFailureCallback
回调,包含存储相关错误码。
无。
imageThumbUrl
接口描述
生成图片缩略图链接。
参数说明
Javapublic static String imageThumbUrl(String url,int thumbSize)
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
String | 是 | 原始图片 URL 地址 |
thumbSize |
Integer | 是 | 图片缩放的尺寸 |
Objective-C+ (NSString *)imageThumbUrl:(NSString *)url
thumbSize:(NSInteger)thumbSize;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
NSString * | 是 | 原始图片 URL 地址 |
thumbSize |
NSInteger | 是 | 图片缩放的尺寸 |
C++nstd::string v2::V2NIMStorageUtil::imageThumbUrl (" const nstd::string & url,
int32_t thumbSize )
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
nstd::string | 是 | 原始图片 URL 地址 |
thumbSize |
int32_t | 是 | 图片缩放的尺寸 |
TypeScriptimageThumbUrl(url: string, thumbSize: number): string
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
string | 是 | 原始图片 URL 地址 |
thumbSize |
number | 是 | 图片缩放的尺寸 |
TypeScriptimageThumbUrl(url: string, thumbSize: number): string
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
string | 是 | 原始图片 URL 地址 |
thumbSize |
number | 是 | 图片缩放的尺寸 |
示例代码
JavaString url = "http://xxx.com/xxx.jpg";
int thumbSize = 100;
String imageThumbUrl = V2NIMStorageUtil.imageThumbUrl(url, thumbSize);
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];
}
}
C++auto thumbURL= V2NIMStorageUtil::imageThumbUrl("image_url", 100);
TypeScriptconst url = nim.V2NIMStorageUtil.imageThumbUrl("https://host/path", 80)
TypeScriptconst url = nim.storageUtil.imageThumbUrl("https://host/path", 80)
返回参数
thumbUrl:缩略图的 URL 地址。
相关回调
无。
getImageThumbUrl
接口描述
获取图片消息中的图片缩略图链接。
参数说明
Javavoid getImageThumbUrl(V2NIMMessageAttachment attachment,
V2NIMSize thumbSize,
V2NIMSuccessCallback<V2NIMGetMediaResourceInfoResult> success,
V2NIMFailureCallback failure);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
attachment |
V2NIMMessageAttachment |
是 | 需要获取缩略图的附件对象。 |
thumbSize |
V2NIMSize |
是 | 要获取的缩略图大小。默认值为 {150,0},0 表示该维度不限制。 内置默认值,不是在声明时指定的,而是运行时根据用户情况判断。 |
success |
V2NIMSuccessCallback<V2NIMGetMediaResourceInfoResult> | 是 | 获取缩略图成功回调,返回 URL 地址。 |
failure |
V2NIMFailureCallback |
是 | 获取缩略图失败回调,返回 错误码。 |
Objective-C- (void)getImageThumbUrl:(V2NIMMessageAttachment *)attachment
thumbSize:(V2NIMSize *)thumbSize
success:(V2NIMGetImageThumbUrlSuccess)success
failure:(V2NIMFailureCallback)failure;
参数名称 | 类型 | 是否必填 | 说明 | |
---|---|---|---|---|
attachment |
V2NIMMessageAttachment |
是 | 需要获取缩略图的附件对象。 | |
thumbSize |
V2NIMSize |
是 | {150,0},0 表示该维度不限制。 内置默认值,不是在声明时指定的,而是运行时根据用户情况判断 |
要获取的缩略图大小。 |
success |
V2NIMGetImageThumbUrlSuccess |
是 | 获取缩略图成功回调,返回 URL 地址。 | |
failure |
V2NIMFailureCallback |
是 | 获取缩略图失败回调,返回 错误码。 |
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},0 表示该维度不限制。 内置默认值,不是在声明时指定的,而是运行时根据用户情况判断。 |
success |
V2NIMSuccessCallback< const V2NIMGetMediaResourceInfoResult &> | 是 | 获取缩略图成功回调,返回 URL 地址。 |
failure |
V2NIMFailureCallback |
是 | 获取缩略图失败回调,返回 错误码。 |
TypeScriptgetImageThumbUrl(attachment: V2NIMMessageAttachment, thumbSize: V2NIMSize): Promise<V2NIMGetMediaResourceInfoResult>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
attachment |
V2NIMMessageAttachment |
是 | 需要获取缩略图的附件对象。 |
thumbSize |
V2NIMSize | 是 | 要获取的缩略图大小。默认值为 {150,0},0 表示该维度不限制。 内置默认值,不是在声明时指定的,而是运行时根据用户情况判断。 |
示例代码
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 -> {
// 获取失败
});
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) {
// 获取失败
}];
C++storageService.getImageThumbUrl(attachment, V2NIMSize(150, 150), [](const V2NIMGetMediaResourceInfoResult& result) {
// get image thumb url succeeded
}, [](V2NIMError error) {
// get image thumb url failed, handle error
});
TypeScript/**
* 生成图片缩略链接
*
* ESM 模式时,需要动态引入 V2NIMStorageUtil 后使用:
* NIM.registerService(V2NIMStorageUtil, 'V2NIMStorageUtil')
*
* 使用示例: nim.V2NIMStorageService.getImageThumbUrl(attachment, { width: 100, height: 100 })
*/
getImageThumbUrl(attachment: V2NIMMessageAttachment, thumbSize: V2NIMSize): Promise<V2NIMGetMediaResourceInfoResult>
返回参数
无。
Promise<V2NIMGetMediaResourceInfoResult>
相关回调
- 请求成功,返回
V2NIMSuccessCallback<V2NIMGetMediaResourceInfoResult>
回调,包含附件下载路径。 - 请求失败,返回
V2NIMFailureCallback
回调,包含存储服务相关错误码。
- 请求成功,返回
V2NIMGetImageThumbUrlSuccess
回调,包含附件下载路径。 - 请求失败,返回
V2NIMFailureCallback
回调,包含存储服务相关错误码。
无。
videoCoverUrl
接口描述
生成视频封面图链接。
参数说明
Javapublic static String videoCoverUrl(String url,int offset)
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
String | 是 | 原始视频 URL 地址 |
offset |
Integer | 是 | 指定视频的目标封面所在时间,即从第几秒开始取封面 |
Objective-C+ (NSString *)videoCoverUrl:(NSString *)url
offset:(NSInteger)offset;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
NSString * | 是 | 原始视频 URL 地址 |
offset |
NSInteger | 是 | 指定视频的目标封面所在时间,即从第几秒开始取封面 |
C++nstd::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 |
TypeScriptvideoCoverUrl(url: string, offset: number): string
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
string | 是 | 原始视频 URL 地址 |
offset |
number | 是 | 指定视频的目标封面所在时间,即从第几秒开始取封面 |
TypeScriptvideoCoverUrl(url: string, offset: number): string
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
url |
string | 是 | 原始视频 URL 地址 |
offset |
number | 是 | 指定视频的目标封面所在时间,即从第几秒开始取封面 |
示例代码
JavaString url = "http://xxx.com/xxx.jpg";
int offset = 0;
String videoCoverUrl = V2NIMStorageUtil.videoCoverUrl(url, offset);
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];
}
}
C++auto coverURL = V2NIMStorageUtil::videoCoverUrl("video_url", 0, 150, "png");
TypeScriptconst url = nim.V2NIMStorageUtil.videoCoverUrl("https://host/path", 0)
TypeScriptconst url = nim.storageUtil.videoCoverUrl("https://host/path", 0)
返回参数
coverUrl:封面图的 URL 地址。
相关回调
无。
getVideoCoverUrl
接口描述
获取视频消息中的视频封面链接。
参数说明
Javavoid getVideoCoverUrl(V2NIMMessageAttachment attachment,
V2NIMSize thumbSize,
V2NIMSuccessCallback<V2NIMGetMediaResourceInfoResult> success,
V2NIMFailureCallback failure);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
attachment |
V2NIMMessageAttachment |
是 | 需要获取视频封面的附件对象。 |
thumbSize |
V2NIMSize |
是 | 要获取的视频封面大小。 默认值为 {150,100},内置默认值不是在声明时指定的,而是运行时根据用户情况判断. |
success |
V2NIMSuccessCallback<V2NIMGetMediaResourceInfoResult> | 是 | 获取视频封面成功回调,返回 URL 地址。 |
failure |
V2NIMFailureCallback |
是 | 获取视频封面失败回调,返回 错误码。 |
Objective-C- (void)getVideoCoverUrl:(V2NIMMessageAttachment *)attachment
thumbSize:(V2NIMSize *)thumbSize
success:(V2NIMGetVideoCoverUrlSuccess)success
failure:(V2NIMFailureCallback)failure;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
attachment |
V2NIMMessageAttachment |
是 | 需要获取视频封面的附件对象。 |
thumbSize |
V2NIMSize |
是 | 要获取的视频封面大小。 默认值为 {150,100},内置默认值不是在声明时指定的,而是运行时根据用户情况判断. |
success |
V2NIMGetVideoCoverUrlSuccess |
是 | 获取视频封面成功回调,返回 URL 地址。 |
failure |
V2NIMFailureCallback |
是 | 获取视频封面失败回调,返回 错误码。 |
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::optional V2NIMSize > |
是 | 要获取的视频封面大小。 默认值为 {150,100},内置默认值不是在声明时指定的,而是运行时根据用户情况判断. |
success |
V2NIMSuccessCallback< constV2NIMGetMediaResourceInfoResult &> |
是 | 获取视频封面成功回调,返回 URL 地址。 |
failure |
V2NIMFailureCallback |
是 | 获取视频封面失败回调,返回 错误码。 |
TypeScriptgetVideoCoverUrl(attachment: V2NIMMessageAttachment, thumbSize: V2NIMSize): Promise<V2NIMGetMediaResourceInfoResult>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
attachment |
V2NIMMessageAttachment |
是 | 需要获取视频封面的附件对象。 |
thumbSize |
V2NIMSize |
是 | 要获取的视频封面大小。 默认值为 {150,100},内置默认值不是在声明时指定的,而是运行时根据用户情况判断. |
示例代码
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 -> {
// 获取失败
});
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) {
// 获取失败
}];
C++storageService.getVideoCoverUrl(attachment, V2NIMSize(150, 150), [](const V2NIMGetMediaResourceInfoResult& result) {
// get video cover url succeeded
}, [](V2NIMError error) {
// get video cover url failed, handle error
});
TypeScript /**
* 生成视频封面图链接
*
* ESM 模式时,需要动态引入 V2NIMStorageUtil 后使用:
* NIM.registerService(V2NIMStorageUtil, 'V2NIMStorageUtil')
*
* 使用示例: nim.V2NIMStorageService.getVideoCoverUrl(attachment, { width: 100, height: 100 })
*/
getVideoCoverUrl(attachment: V2NIMMessageAttachment, thumbSize: V2NIMSize): Promise<V2NIMGetMediaResourceInfoResult>
返回参数
无。
Promise<V2NIMGetMediaResourceInfoResult>
相关回调
- 请求成功,返回
V2NIMSuccessCallback<V2NIMGetMediaResourceInfoResult>
回调,包含附件下载路径。 - 请求失败,返回
V2NIMFailureCallback
回调,包含存储服务相关错误码。
- 请求成功,返回
V2NIMGetVideoCoverUrlSuccess
回调,包含附件下载路径。 - 请求失败,返回
V2NIMFailureCallback
回调,包含存储服务相关错误码。
无。
downloadAttachment
接口描述
下载消息附件。
若附件已经下载成功,则直接回调下载成功,返回下载路径(path)。
下载路径规则如下:
- 若用户指定下载路径(
downloadParam.saveAs
),则始终以用户指定的为准。 - 若用户 未指定 下载路径,但附件(
attachment
)中有路径(path)信息,则以attachment.path
为准。 - 若用户 未指定 下载路径,且附件(
attachment
)为空,则使用用户缓存目录。
参数说明
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 | 是 | 下载消息附件进度回调。 |
Objective-C- (void) downloadAttachment: (V2NIMDownloadMessageAttachmentParams *) downloadParam
success: (V2NIMDownloadAttachmentSuccess) success
failure: (V2NIMFailureCallback) failure
progress: (nullable V2NIMProgressCallback) progress
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
downloadParam |
V2NIMDownloadMessageAttachmentParams | 是 | 下载附件的配置参数。 |
success |
V2NIMDownloadAttachmentSuccess |
是 | 下载消息附件成功回调,可自定义。 |
failure |
V2NIMFailureCallback |
是 | 下载消息附件失败回调,返回 错误码。 |
progress |
V2NIMProgressCallback | 是 | 下载消息附件进度回调。 |
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 | 是 | 下载消息附件进度回调。 |
示例代码
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 -> {
// 下载进度变更
});
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) {
// 下载进度变更
}];
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
});
返回参数
无。
相关回调
- 请求成功,返回
V2NIMSuccessCallback
回调,包含附件下载路径。 - 请求失败,返回
V2NIMFailureCallback
回调,包含存储服务相关错误码。 - 返回
V2NIMProgressCallback
回调,包含附件下载进度。
- 请求成功,返回
V2NIMDownloadAttachmentSuccess
回调,包含附件下载路径。 - 请求失败,返回
V2NIMFailureCallback
回调,包含存储服务相关错误码。 - 返回
V2NIMProgressCallback
回调,包含附件下载进度。