### 文件下载
AnyChat提供文件下载功能,支持从远程文件服务器上下载ppt、音频文件、视频文件等场景。
#### 下载控制宏定义
```
var BRAC_SO_CORESDK_PPTHELPERINIT = 223; // PPT播报环境初始化
var BRAC_SO_CORESDK_PPTFILECTRL = 224; // PPT文件控制
//文件控制命令定义常量:
var BRPPT_FILECTRL_DOWNLOAD = 0x01; ///< 下载文件
var BRPPT_FILECTRL_CANCEL = 0x02; ///< 取消下载
var BRPPT_FILECTRL_DELETE = 0x04; ///< 删除文件
//文件信息查询定义常量:
var BRPPT_FILEINFO_DOWNLOAD_STATUS = 0x01; ///< 下载状态
var BRPPT_FILEINFO_PPTDETAILS = 0x02; ///< PPT详情
var ANYCHAT_SERVERQUERY_PPTFILEINFO = 10; // PPT文件信息
var ANYCHAT_CORESDKEVENT_PPTHELPER = 31; //< PPTHelper事件
var ANYCHAT_SDKCTRL_PPTHELPERINIT = 90; ///< PPT播报环境初始化
var ANYCHAT_SDKCTRL_PPTFILECTRL = 91; ///< PPT文件控制
var ANYCHAT_SDKCTRL_PPTFILEINFO = 92; ///< PPT文件信息
```
#### 设置下载保存地址
```
var json = {
"savepath":"d:\\video"
};
BRAC_SDKControl(ANYCHAT_SDKCTRL_PPTHELPERINIT, json)
```
#### 下载、取消下载、删除文件
```
//下载
var json={
"ctrlcode":BRPPT_FILECTRL_DOWNLOAD, //0x01;< 下载文件
"fileid":fileid, //文件id,字符串型,可置空,但不建议(底层会生成GuID,但建议自定义)
"fileurl":fileurl, //下载地址
"filemd5":filemd5, //文件md5值,可置空
"filetype":variable
};
// variable 取值范围如下
var BRPPT_FILETYPE_PPT = 0x01 ///< ppt文件
var BRPPT_FILETYPE_VIDEO = 0x02 ///< 视频文件
var BRPPT_FILETYPE_AUDIO = 0x03 ///< 音频文件
var BRPPT_FILETYPE_COMMZIP = 0x04 ///< 普通zip文件
var BRPPT_FILETYPE_IMAGE = 0x05 ///< 图片
//取消下载
var json = {
"ctrlcode": BRPPT_FILECTRL_CANCEL, ///< 取消下载
"fileid": fileid //文件id 之定义字符串
};
//删除文件
var json = {
"ctrlcode": BRPPT_FILECTRL_DELETE, ///< 删除文件
"fileid": fileid //文件id 之定义字符串
};
BRAC_SDKControl(ANYCHAT_SDKCTRL_PPTFILECTRL, json);
```
#### 获取下载状态
```
var json = {
"infocode": BRPPT_FILEINFO_DOWNLOAD_STATUS, // 0x01; < 下载状态
"fileid": fileid // 文件id
};
var result = BRAC_SDKControl(ANYCHAT_SDKCTRL_PPTFILEINFO, json);
//返回result
{
"downloadsize": 12193, //已经下载的大小
"errorcode": 0, //错误码
"fileid": "20170516", //文件id
"filetotalsize": 151890, //文件总大小
"progress": 8 //文件进度 0-100 百分比
}
```
#### 获取下载的详细信息
```
json = {
"infocode": BRPPT_FILEINFO_PPTDETAILS, //0x02; 详情
"fileid": fileid // 文件id
};
result = BRAC_SDKControl(ANYCHAT_SDKCTRL_PPTFILEINFO, json);
//result 返回结果
{
"details": {
"audio_address": "audio\1.mp3", // ppt 音频文件相对压缩包根目录路径
"pptlist": [
{
"audio_end": 5, // 第一页ppt播放结束时间(s)
"audio_start": 0, // 第一页ppt播放开始时间(s)
"ppt_address": "ppt\1.jpg" // 第一页ppt 相对压缩包根目录路径
},
{
"audio_end": 24,
"audio_start": 5,
"ppt_address": "ppt\2.jpg"
},
]
},
"errorcode": 0,
"fileid": "20170516", //文件id
"filepath": "d:\video\temp\ppt\20170516\", //压缩包解压后的所在目录路径,如果下载类型是视频文件、音频文件、图片文件,这个为绝对路径获取无需拼接
"filetype": variable
}
//variable的返回范围如下
var BRPPT_FILETYPE_PPT = 0x01 ///< ppt文件
var BRPPT_FILETYPE_VIDEO = 0x02 ///< 视频文件
var BRPPT_FILETYPE_AUDIO = 0x03 ///< 音频文件
var BRPPT_FILETYPE_COMMZIP = 0x04 ///< 普通zip文件
var BRPPT_FILETYPE_IMAGE = 0x05 ///< 图片
```
#### 下载完成回调
下载完成会后触发AnyChatCoreSDK异步事件
```
// AnyChatCoreSDK异步事件
function OnAnyChatCoreSDKEvent(dwEventType, lpEventJsonStr) {
switch (parseInt(dwEventType)) {
// 因为有多种回调都触发该事件,所以根据dwEventType来判断是否为下载完成的事件。
case ANYCHAT_CORESDKEVENT_PPTHELPER: OnAnyChatPPT(lpEventJsonStr); break;
}
}
```