(function (){ webos.fileSystem.kodboxUpload = { lastId:0, getFpSizeFpl:function (size){ var fpSize = 5242880; var fpSl = size / fpSize; fpSl = Math.floor(fpSl); if (size % fpSize != 0) { fpSl++; } return {fpSize,fpSl}; }, getFp:async function (index,param){ var that = this; if(!param.fpMap){ param.fpMap = {} } if(index<0){ index = 0; }else if(index >= param.needFps){ index = param.needFps - 1; } if(param.fpMap && param.fpMap["index"+index]){ return param.fpMap["index"+index]; } let end = (index+1)*param.fpSize; if(param.size < end){ end = param.size; } const fp = param.file.slice(index*param.fpSize,end); param.fpMap["index"+index] = {fp:fp,simpleHash:await webos.fileSystem.fileHashSimple(fp)}; return param.fpMap["index"+index]; }, uploadPreCommon:async function (param){ var that = this; if(param.uploadPreRes){ return true; } var fpData = that.getFpSizeFpl(param.size); param.needFps = fpData.fpSl; param.fpSize = fpData.fpSize; let postData = { fullPath:param.fullPath, name:param.name, checkType:"checkHash", checkHashSimple:param.preHash, size:param.size, modifyTime:param.file.lastModified, chunkSize:param.fpSize, chunks:0 }; let dataStr = await webos.request.commonData("fileSystem", "uploadPre",{path:param.path,expand:JSON.stringify(postData),name:param.filePath}); param.lastErrorReqMsg = webos.context.get("lastErrorReqMsg"); param.lastSuccessReqMsg = webos.context.get("lastSuccessReqMsg"); try{ param.uploadPreRes = JSON.parse(dataStr); if(param.uploadPreRes.checkChunkArray.length === 0){ param.uploadPreRes.checkChunkArray = {} } if(param.uploadPreRes){ return true; } }catch (e){ } return false; }, upload:async function (param,progress){ var that = this; if(param.expName){ webos.message.error("文件合并中,操作失败"); return; }; if(!param.preHash){ param.preHash = await webos.fileSystem.fileHashSimple(param.file); }; if(!param.uploadPreRes){ var flag = await that.uploadPreCommon(param); if(!flag){ param.status = 3; param.msg = param.lastErrorReqMsg; param.statusChange(param); return; } param.kodboxId = ++that.lastId; }; if(!param.hasCheckHash){ param.hasCheckHash = true; webos.fileSystem.fileMd5(param.file).then(function (fileHash){ param.fileHash = fileHash; that.checkComplete(param,param.hasComplete); }); } let isFirst = true; for(let i=0;i