(function (){ webos.fileSystem.localUpload = { getFp:async function (index,param){ var that = this; if(index<0){ index = 0; }else if(index >= param.needFps){ index = param.needFps - 1; } let end = (index+1)*param.fpSize; if(param.size < end){ end = param.size; } const fp = param.file.slice(index*param.fpSize,end); const fp_hash = await webos.fileSystem.fileMd5(fp); return {fp:fp,hash:fp_hash}; }, 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.hasCheckHash){ param.hasCheckHash = true; webos.fileSystem.fileMd5(param.file).then(function (fileHash){ param.fileHash = fileHash; if(param.hasComplete){ that.checkComplete(param); }else{ webos.request.commonData("fileSystem", "uploadPre",{path:param.path,expand:JSON.stringify({"file_hash":param.fileHash,"pre_hash":param.preHash}),name:param.filePath}).then( function (dataStr){ if(!dataStr){ return; } const uploadPreRes = JSON.parse(dataStr); if(uploadPreRes.has){ if(param.currentXhr){ param.currentXhr.abort(); } param.status = 2; param.msg = "上传成功"; param.statusChange(param); return; }else{ if(param.hasComplete){ that.checkComplete(param); } } } ); } }); } var errMsg; if(!param.uploadPreRes){ let dataStr = await webos.request.commonData("fileSystem", "uploadPre",{path:param.path,expand:JSON.stringify({"file_hash":param.fileHash,"pre_hash":param.preHash}),name:param.filePath}); errMsg = webos.context.get("lastErrorReqMsg"); if(!dataStr){ param.status = 3; param.msg = errMsg?errMsg:"上传出错"; param.statusChange(param); return; } try{ param.uploadPreRes = JSON.parse(dataStr); }catch (e){ } if(param.uploadPreRes){ param.currentFp = param.uploadPreRes.currentFp; } }; if(!param.uploadPreRes){ param.status = 3; param.msg = "上传出错"; param.statusChange(param); return; }; if(param.uploadPreRes.has){ param.status = 2; param.msg = "上传成功"; param.statusChange(param); return; }; let isFirst = true; for(let i=0;i