NOS云存储服务

SDK提供远程文件存储功能,用户通过SDK提供的接口可以实现文件的上传和下载。

下载

通过URL下载文件

/** @fn static bool DownloadResource(const std::string& nos_url, const DownloadMediaCallback& callback_result, const ProgressCallback& callback_progress = ProgressCallback())
* 下载资源
* @param[in] nos_url 下载资源的URL
* @param[in] callback_result 下载的回调函数
* @param[in] callback_progress 下载进度的回调函数
* @return bool 检查参数如果不符合要求则返回失败
* @note 错误码    200:成功
*        408:请求过程超时
*        其他:参见HTTP协议或CURL错误码
*/
static bool DownloadResource(const std::string& nos_url, const DownloadMediaCallback& callback_result, const ProgressCallback& callback_progress = ProgressCallback());

nos_url 必须为NOS服务器中文件的地址,通过上传或从消息中可以获取到NOS URL。

void DownloadResourceCallback(nim::NIMResCode res_code, const std::string& file_path, const std::string& call_id, const std::string& res_id)
{
    //下载结果,file_path 为文件保存路径
}

void DownloadResourceProgressCallback(__int64 downloaded_size, __int64 file_size)
{
    //下载进度
}

void foo(const std::string nos_url)
{
    nim::NOS::DownloadResource(nos_url, &DownloadResourceCallback, &DownloadResourceProgressCallback);
}

下载消息中的文件

/** @fn static bool FetchMedia(const IMMessage& msg, const DownloadMediaCallback& callback_result, const ProgressCallback& callback_progress)
* 获取资源
* @param[in] msg 消息内容
* @param[in] callback_result 下载的回调函数
* @param[in] callback_progress 下载进度的回调函数
* @return bool 检查参数如果不符合要求则返回失败
* @note 错误码    200:成功
*        408:请求过程超时
*        其他:参见HTTP协议或CURL错误码
*/
static bool FetchMedia(const IMMessage& msg, const DownloadMediaCallback& callback_result, const ProgressCallback& callback_progress);
void DownloadResourceCallback(nim::NIMResCode res_code, const std::string& file_path, const std::string& call_id, const std::string& res_id)
{
    //下载结果,file_path 为文件保存路径,通过res_id和call_id可以从消息历史记录中获取消息信息
}

void DownloadResourceProgressCallback(__int64 downloaded_size, __int64 file_size)
{
    //下载进度
}

void foo(const IMMessage& msg)
{
    nim::NOS::FetchMedia(msg, &DownloadResourceCallback, &DownloadResourceProgressCallback);
}

上传

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

/** @fn static bool UploadResource(const std::string& local_file, const UploadMediaCallback& callback_result, const ProgressCallback& callback_progress = ProgressCallback())
* 上传资源
* @param[in] local_file 本地文件的完整路径,路径名必须是utf-8
* @param[in] callback_result 上传的回调函数
* @param[in] callback_progress 上传进度的回调函数
* @return bool 检查参数如果不符合要求则返回失败
* @note 错误码    200:成功
*            408:请求过程超时
*            其他:参见HTTP协议或CURL错误码
*/
static bool UploadResource(const std::string& local_file, const UploadMediaCallback& callback_result, const ProgressCallback& callback_progress = ProgressCallback());
void OnUploadCallback(int res_code, const std::string& url)
{
    //上传结果,url为文件在NOS服务器的下载地址
}

void foo()
{
    nim::NOS::UploadResource("D://test_file.txt", &OnUploadCallback);
}

注册默认下载回调

在接收到包含文件的消息后SDK会自动下载文件,注册下载回调能够获取到文件的下载进度和结果,在自动下载失败时用户可以手动调用下载接口再次尝试下载。

/** @fn static void RegDownloadCb(const DownloadMediaCallback& cb)
* (全局回调)注册下载回调,通过注册回调获得HTTP下载结果通知(所有触发HTTP下载任务的接口的参数列表里无法设置通知回调处理函数的通知都走这个通知,比如收到图片语音会触发SDK自动下载等,开发者可以通过监听这个广播通知结果刷新UI资源)
* @param[in] cb 下载的回调函数
* @return void 无返回值
*/
static void RegDownloadCb(const DownloadMediaCallback& cb);

注册默认上传回调

发送包含文件的消息时SDK会自动将文件上传到NOS服务器,上传成功后将文件的下载URL发送给接收方,注册上传回调可以获取到文件的上传信息。

/** @fn static void RegUploadCb(const UploadMediaExCallback& cb)
* (全局回调)注册上传回调,通过注册回调获得HTTP上传结果通知(所有触发HTTP上传任务的接口的参数列表里无法设置通知回调处理函数的通知都走这个通知,比如发送文件图片语音消息等)
* @param[in] cb 回调函数
* @return void 无返回值
*/
static void RegUploadCb(const UploadMediaExCallback& cb);