NOS云存储服务

下载

下载资源,回调函数包括了下载结果以及下载进度

@param rescode:200表示下载成功
@param file_path:下载文件的完整路径
@param call_id:对话id
@param res_id:消息id,与对话id一起可定位到具体的消息,然后根据rescode调整UI呈现
typedef void(*nim_nos_download_cb_func)(int rescode, const char *file_path, const char *call_id, const char *res_id, const char *json_extension, const void *user_data);
@param downloaded_size:已下载大小
@param file_size:文件大小,单位都是字节
typedef void(*nim_nos_download_prg_cb_func)(__int64 downloaded_size, __int64 file_size, const char *json_extension, const void *user_data);

从消息中下载附件

在接收到包含附件的消息(如文件消息、图片消息)可以调用void nim_nos_download_media(const char *json_msg, nim_nos_download_cb_func callback_result, const void *download_user_data, nim_nos_download_prg_cb_func prg_cb, const void *prg_user_data),将接收到的消息体作为参数,该接口会自动下载消息中包含的文件。

通过URL下载

如果获取到了NOS的下载地址,可以调用void nim_nos_download(const char *nos_url, nim_nos_download_cb_func res_cb, const void *res_user_data, nim_nos_download_prg_cb_func prg_cb, const void *prg_user_data)直接从远程地址下载文件。

停止下载

SDK在收到包含附件的消息时会自动下载文件,如果在自动下载过程中出现异常可以调用void nim_nos_stop_download_media(const char *json_msg)主动结束下载,调用该接口需要传入正确的消息体参数。

上传

上传资源,回调函数包括了上传结果以及上传进度

@param rescode:错误码,200表示成功
@param url:上传成功后返回的url
typedef void(*nim_nos_upload_cb_func)(int rescode, const char *url, const char *json_extension, const void *user_data);
@uploaded_size:已上传大小
@file_size:文件大小
typedef void(*nim_nos_upload_prg_cb_func)(__int64 uploaded_size, __int64 file_size, const char *json_extension, const void *user_data);
void nim_nos_upload(const char *local_file, nim_nos_upload_cb_func callback_result, const void *res_user_data, nim_nos_upload_prg_cb_func prg_cb, const void *prg_user_data);

默认NOS回调

在接收到文件类消息时SDK会自动下载,通过nim_nos_reg_download_cb注册默认的下载回调函数,SDK会在文件下载完成时通知应用程序,可以避免文件未下载完成就使用的情况。回调函数定义如下:

/** @typedef void (*nim_nos_download_cb_func)(int rescode, const char *file_path, const char *call_id, const char *res_id, const char *json_extension, const void *user_data)
* nim callback function for nos http download
* @param[out] rescode             下载结果,一切正常200
* @param[out] file_path            下载资源文件本地绝对路径
* @param[out] call_id                如果下载的是消息中的资源,则为消息所属的会话id,否则为空
* @param[out] res_id                如果下载的是消息中的资源,则为消息id,否则为空
* @param[out] json_extension        json扩展数据(备用)
* @param[out] user_data            APP的自定义用户数据,SDK只负责传回给回调函数,不做任何处理!
* @return void 无返回值
*/ 
typedef void (*nim_nos_download_cb_func)(int rescode, const char *file_path, const char *call_id, const char *res_id, const char *json_extension, const void *user_data);

在回调函数中通过call_idres_id可以定位到正在自动下载文件的消息。

在发送文件类消息时SDK会自动上传文件,应该程序可以通过nim_nos_reg_upload_cb注册回调函数获取文件上传结果,或者在发送消息的接口nim_talk_send_msg设置文件上传进度回调。