/**
* @description: 下载文件到本地
* @param {string} url 请求URl
* @param {string} savePath 保存 url
* @param {function} callback 下载回调
*/
//正在下载的
private downloadingList = {};
public downloadFile(url: string, savePath: string, callback: (result: boolean, data: any) => void) {
if (sys.isNative && sys.os == sys.OS.ANDROID) {
if (this.downloadingList[url]) {
this.downloadingList[url].push(callback);
return;
}
if (!this.isValidMD5FileName(url)) {
Logger.log("_fileCacher,downloadFile url不合法", url)
callback(false, null);
return;
}
this.downloadingList[url] = [callback];
const downloader: native.Downloader = new native.Downloader();
downloader.onSuccess = (task: native.DownloadTask) => {
for (let cb of this.downloadingList[url]) {
cb(true, savePath)
}
delete this.downloadingList[url];
}
Logger.log("_fileCacher,downloadFile url", url);
downloader.onError = (task: native.DownloadTask, errorCode: number, errorCodeInternal: number, errorStr: string) => {
Logger.log("_fileCacher,download fail", errorCode, errorCodeInternal, errorStr)
for (let cb of this.downloadingList[url]) {
cb(false, url)
}
delete this.downloadingList[url];
}
//创建下载任务
downloader.createDownloadTask(url, savePath, "imageDownloadTask");
}
}