### 文件下載
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;
}
}
```