" + fname + "[正在上传...]
"); xhr = new XMLHttpRequest();// 这东西类似于servlet里面的request var fd = new FormData();// 用于封装文件数据的对象 fd.append("file", uploadfile);// 将文件对象添加到FormData对象中,字段名为uploadfile fd.append("folderId", locationpath); if(repeModelList != null && repeModelList[fname] != null){ if(repeModelList[fname] == 'skip'){ $("#uls_" + count).text("[已完成]"); if (count < fcount) { doupload(count + 1); return ; } else { // 清空所有提示信息,还原上传窗口 isUpLoading=false; $("#filepath").removeAttr("disabled"); $("#uploadfile").val(""); $("#filepath").val(""); $("#pros").width("0%"); $("#pros").attr('aria-valuenow',"0"); $("#umbutton").attr('disabled', false); $("#filecount").text(""); $("#uploadstatus").text(""); $("#selectcount").text(""); $('#uploadFileModal').modal('hide'); showFolderView(locationpath); return ; } } fd.append("repeType", repeModelList[fname]); } xhr.open("POST", "homeController/douploadFile.ajax", true);// 上传目标 xhr.upload.addEventListener("progress", uploadProgress, false);// 这个是对上传进度的监听 // 上面的三个参数分别是:事件名(指定名称)、回调函数、是否冒泡(一般是false即可) xhr.send(fd);// 上传FormData对象 if(pingInt == null){ pingInt = setInterval("ping()",60000);// 上传中开始计时应答 } // 上传结束后执行的回调函数 xhr.onloadend = function() { // 停止应答计时 if(pingInt != null){ window.clearInterval(pingInt); pingInt = null; } if (xhr.status === 200) { // TODO 上传成功 var result = xhr.responseText; if (result == "uploadsuccess") { $("#uls_" + count).text("[已完成]"); if (count < fcount) { doupload(count + 1); } else { // 清空所有提示信息,还原上传窗口 isUpLoading=false; $("#filepath").removeAttr("disabled"); $("#uploadfile").val(""); $("#filepath").val(""); $("#pros").width("0%"); $("#pros").attr('aria-valuenow',"0"); $("#umbutton").attr('disabled', false); $("#filecount").text(""); $("#uploadstatus").text(""); $("#selectcount").text(""); $('#uploadFileModal').modal('hide'); showFolderView(locationpath); } } else if (result == "uploaderror") { showUploadFileAlert("提示:出现意外错误,文件:[" + fname + "]上传失败,上传被中断。"); $("#uls_" + count).text("[失败]"); } else if(result == 'filesTotalOutOfLimit'){ showUploadFileAlert("提示:该文件夹内存储的文件数量已达上限,文件:[" + fname + "]上传失败。您可以尝试将其上传至其他文件夹内。"); $("#uls_" + count).text("[失败]"); } else { showUploadFileAlert("提示:出现意外错误,文件:[" + fname + "]上传失败,上传被中断。"); $("#uls_" + count).text("[失败]"); } } else { showUploadFileAlert("提示:出现意外错误,文件:[" + fname + "]上传失败,上传被中断。"); $("#uls_" + count).text("[失败]"); } }; } else { showUploadFileAlert("提示:要上传的文件不存在。"); $("#uploadstatus").prepend( "未找到要上传的文件[失败]
"); } } // 显示上传文件进度 function uploadProgress(evt) { if (evt.lengthComputable) { // evt.loaded:文件上传的大小 evt.total:文件总的大小 var percentComplete = Math.round((evt.loaded) * 100 / evt.total); // 加载进度条,同时显示信息 $("#pros").width(percentComplete + "%"); $("#pros").attr('aria-valuenow',""+percentComplete); } } // 显示上传文件错误提示 function showUploadFileAlert(txt) { isUpLoading=false; $("#filepath").removeAttr("disabled"); $("#uploadFileAlert").show(); $("#uploadFileAlert").text(txt); $("#umbutton").attr('disabled', false); } // 取消上传文件 function abortUpload() { isUpLoading=false; if (xhr != null) { xhr.abort(); } $('#uploadFileModal').modal('hide'); showFolderView(locationpath); } // 显示下载文件模态框 function showDownloadModel(fileId, fileName) { $("#downloadFileName").text("提示:您确认要下载文件:[" + fileName + "]么?"); $("#downloadHrefBox").html("正在生成..."); getDownloadFileId=fileId; getDownloadFileName=fileName; $("#downloadFileBox") .html( ""); $("#dlmbutton").attr('disabled', false); $("#downloadModal").modal('show'); } // 执行下载操作 function dodownload(fileId) { $("#dlmbutton").attr('disabled', true); $("#downloadFileName").text("提示:准备开始下载,请稍候..."); var t = setTimeout("$('#downloadModal').modal('hide');", 800); window.location.href = "homeController/downloadFile.do?fileId=" + fileId; } // 显示删除文件模态框 function showDeleteFileModel(fileId, fileName) { $('#deleteFileBox') .html( ""); $("#dfmbutton").attr('disabled', false); $('#deleteFileMessage').text("提示:确定要彻底删除文件:[" + fileName + "]么?该操作不可恢复"); $('#deleteFileModal').modal('toggle'); } // 执行删除文件操作 function deleteFile(fileId) { $("#dfmbutton").attr('disabled', true); $('#deleteFileMessage').text("提示:正在删除,请稍候..."); $.ajax({ type : "POST", dataType : "text", data : { fileId : fileId }, url : "homeController/deleteFile.ajax", success : function(result) { if (result == "mustLogin") { window.location.href = "prv/login.html"; } else { if (result == "noAuthorized") { $('#deleteFileMessage').text("提示:您的操作未被授权,删除失败"); $("#dfmbutton").attr('disabled', false); } else if (result == "errorParameter") { $('#deleteFileMessage').text("提示:参数不正确,删除失败"); $("#dfmbutton").attr('disabled', false); } else if (result == "cannotDeleteFile") { $('#deleteFileMessage').text("提示:出现意外错误,可能未能删除文件"); $("#dfmbutton").attr('disabled', false); } else if (result == "deleteFileSuccess") { $('#deleteFileModal').modal('hide'); showFolderView(locationpath); } else { $('#deleteFileMessage').text("提示:出现意外错误,可能未能删除文件"); $("#dfmbutton").attr('disabled', false); } } }, error : function() { $('#deleteFileMessage').text("提示:出现意外错误,可能未能删除文件"); $("#dfmbutton").attr('disabled', false); } }); } // 显示重命名文件模态框 function showRenameFileModel(fileId, fileName) { $("#newFileNamealert").removeClass("alert"); $("#newFileNamealert").removeClass("alert-danger"); $("#filerenamebox").removeClass("has-error"); $("#newFileNamealert").text(""); $("#renameFileBox").html( ""); $("#newfilename").val(fileName); $("#renameFileModal").modal('toggle'); } // 修改文件名 function renameFile(fileId) { var reg = new RegExp("[\/\|\\\\\*\\<\\>\\?\\:\\&\\$" + '"' + "]+", "g"); var newFileName = $("#newfilename").val(); if (newFileName.length > 0) { if (newFileName.length < 128) { if (!reg.test(newFileName) && newFileName.indexOf(".")!=0) { $.ajax({ type : "POST", dataType : "text", data : { fileId : fileId, newFileName : newFileName }, url : "homeController/renameFile.ajax", success : function(result) { if (result == "mustLogin") { window.location.href = "prv/login.html"; } else { if (result == "cannotRenameFile") { showRFileAlert("提示:出现意外错误,可能未能重命名文件,请刷新后重试。"); } else if (result == "renameFileSuccess") { $('#renameFileModal').modal('hide'); showFolderView(locationpath); } else if (result == "errorParameter") { showRFileAlert("提示:参数错误,重命名失败,请刷新后重试。"); } else if (result == "nameOccupied") { showRFileAlert("提示:该名称已被占用,请选取其他名称。"); } else if (result == "noAuthorized") { showRFileAlert("提示:您的操作未被授权,重命名失败,请刷新后重试。"); } else { showRFileAlert("提示:出现意外错误,可能未能重命名文件,请刷新后重试。"); } } }, error : function() { showRFileAlert("提示:出现意外错误,可能未能重命名文件。"); } }); } else { showRFileAlert("提示:文件名中不应含有:引号 / \\ * | < > & $ : ? 且不能以“.”开头。"); } } else { showRFileAlert("提示:文件名称太长。"); } } else { showRFileAlert("提示:文件名不能为空。"); } } // 显示重命名文件状态提示 function showRFileAlert(txt) { $("#newFileNamealert").addClass("alert"); $("#newFileNamealert").addClass("alert-danger"); $("#filerenamebox").addClass("has-error"); $("#newFileNamealert").text(txt); } // 获取文件名的后缀名,以小写形式输出 function getSuffix(filename) { var index1 = filename.lastIndexOf("."); var index2 = filename.length; var suffix = filename.substring(index1 + 1, index2); return suffix.toLowerCase(); } // 播放指定格式的视频 function playVideo(fileId) { window.open("quickview/video.html?fileId=" + fileId); } // 预览PDF文档 function pdfView(filePath) { window.open("/pdfview/web/viewer.html?file=/fileblocks/" + filePath); } // 预览Docx文档 function docxView(fileId){ window.open("/pdfview/web/viewer.html?file=/resourceController/getWordView/" + fileId); } // 预览TXT文档 function txtView(fileId){ window.open("/pdfview/web/viewer.html?file=/resourceController/getTxtView/" + fileId); } // 预览PPT文档 function pptView(fileId){ window.open("/pdfview/web/viewer.html?file=/resourceController/getPPTView/" + fileId); } // 查看图片 function showPicture(fileId) { $.ajax({ url : "homeController/getPrePicture.ajax", data : { fileId : fileId }, type : "POST", dataType : "text", success : function(result) { if (result != "ERROR") { pvl = eval("(" + result + ")"); // TODO 整合viewer.js插件 if(pvl.pictureViewList.length <= viewerPageSize) { createViewList();// 以全列方式显示图片列表 } else { // 以分页方式显示图片列表 viewerPageIndex = Math.ceil((pvl.index + 1) / viewerPageSize); viewerTotal = Math.ceil(pvl.pictureViewList.length / viewerPageSize); createViewListByPage(); var innerIndex = pvl.index - ((viewerPageIndex - 1) * viewerPageSize); if(viewerPageIndex > 1) { innerIndex++; } viewer.viewer('view', innerIndex); viewer.viewer('show', true); } // end } else { alert("错误:无法定位要预览的文件或该操作未被授权。"); } }, error : function() { alert("错误:请求失败,请刷新重试。"); } }); } // 用于创建并显示小于2*limit+1长度的图片列表 function createViewList() { if(viewer == null) { var images = document.createElement("ul"); for(var i = 0; i < pvl.pictureViewList.length; i++) { if(pvl.pictureViewList[i].filePath.startsWith("homeController")){ $(images).append(""); }else{ $(images).append(""); } } viewer = $(images); viewer.viewer({ loop: false, hidden: function() { viewer.data('viewer').destroy(); viewer = null; } }); } viewer.viewer('view', pvl.index); viewer.viewer('show', true); } // 用于创建长于2*limit+1长度的图片分页列表 function createViewListByPage() { // 初始化分页结构 if(viewer == null) { var images = document.createElement("ul"); var startIndex = (viewerPageIndex - 1) * viewerPageSize; if(viewerPageIndex > 1) { $(images).append(""); } for(var i = 0; i < viewerPageSize && i < (pvl.pictureViewList.length - (viewerPageIndex - 1) * viewerPageSize); i++) { if(pvl.pictureViewList[startIndex+i].filePath.startsWith("homeController")){ $(images).append(""); }else{ $(images).append(""); } } if(viewerPageIndex < viewerTotal) { $(images).append(""); } viewer = $(images); viewer.viewer({ loop: false, view: function(event) { // 点击的计数为event.detail.index; if(event.detail.index == 0 && viewerPageIndex != 1) { viewerPageIndex--; viewer.data('viewer').destroy(); viewer.empty(); viewer = null; createViewListByPage(); if(viewerPageIndex > 1){ viewer.viewer('view',viewerPageSize); }else{ viewer.viewer('view',viewerPageSize - 1); } } else if(event.detail.index == viewerPageSize + 1 || (event.detail.index == viewerPageSize && viewerPageIndex == 1)) { viewerPageIndex++; viewer.data('viewer').destroy(); viewer.empty(); viewer = null; createViewListByPage(); viewer.viewer('view',1); } }, hidden: function() { viewer.data('viewer').destroy(); viewer.empty(); viewer = null; } }); } } // 兼容Chrome、IE、FF的Shift判定 function isShift(event){ var e=window.event ||event; if(e.shiftKey){ return true; }else{ return false; } } // 选中某一行文件,如果使用Shift点击则为多选 function checkfile(event,fileId) { if(!isShift(event)){ $(".filerow").removeClass("info"); $("#" + fileId).addClass("info"); }else{ if ($("#" + fileId).hasClass("info")) { $("#" + fileId).removeClass("info"); } else { $("#" + fileId).addClass("info"); } } } // 连续选中若干行文件:Shift+双击,选中规则为:前有选前,后有选后,全有也选后。 function checkConsFile(event,fileId){ if(isShift(event)){ var endRow=$("#" + fileId); var endRowIndex=endRow.index(); var startRowIndex=$('.filerow.info:last').index(); if(startRowIndex != -1){ if(startRowIndex < endRowIndex){ while(endRow[0] && !endRow.hasClass("info")){ endRow.addClass("info"); endRow=endRow.prev(); } }else{ while(endRow[0] && !endRow.hasClass("info")){ endRow.addClass("info"); endRow=endRow.next(); } } } } } // 用于获取全部选中的文件夹和文件ID,该function返回一个对象。 // 该对象中,filesId属性为文件ID,foldersId属性为文件夹ID。两个属性均为JSON数组形式的字符串,可直接发送至服务器。此外还有size,包含了元素的总数。 function getCheckedFilesAndFolders(){ var filesAndFolders=new Object(); filesAndFolders.size=0; var filesId=new Array(); var foldersId=new Array(); var checkedfiles = $(".info").get(); for (var i = 0; i < checkedfiles.length; i++) { if(checkedfiles[i].getAttribute("iskfolder")=="true"){ foldersId.push(checkedfiles[i].id); }else{ filesId.push(checkedfiles[i].id); } filesAndFolders.size++; } filesAndFolders.filesId = JSON.stringify(filesId); filesAndFolders.foldersId = JSON.stringify(foldersId); return filesAndFolders; } // 切换全部文件行的选中或非选中 function checkallfile() { if ($(".filerow.info").length==$(".filerow").length) { $(".filerow").removeClass("info"); } else { $(".filerow").addClass("info"); } } // 显示打包下载模态框 function showDownloadAllCheckedModel() { if(!folderView.enableDownloadZip){ return; } $("#downloadAllCheckedBox").html(""); $("#downloadAllCheckedLoad").text(""); var faf=getCheckedFilesAndFolders(); if (faf.size == 0) { $("#downloadAllCheckedName").html(checkFilesTip); } else { $("#downloadAllCheckedName").text( "提示:您确认要打包并下载这" + faf.size + "项么?"); $("#downloadAllCheckedBox") .html( ""); $("#dclmbutton").attr('disabled', false); } $("#downloadAllCheckedModal").modal('toggle'); } // 下载选中的所有文件 function downloadAllChecked() { $("#dclmbutton").attr('disabled', true); var faf=getCheckedFilesAndFolders(); $("#downloadAllCheckedName").text( "提示:服务器正在对选中资源进行压缩(共" + faf.size + "项),这可能需要一些时间(文件越大耗时越长),压缩完成将自动开始下载。"); // 计算预计耗时 $.ajax({ url:'homeController/getPackTime.ajax', type:'POST', data:{ strIdList:faf.filesId, strFidList:faf.foldersId }, dataType:'text', success:function(result){ if(result!="0"){ var count = 0; $("#downloadAllCheckedLoad").text("已耗时:"+count+"秒(预计耗时:"+result+")"); zipTimer=setInterval(function() { count++; $("#downloadAllCheckedLoad").text("已耗时:"+count+"秒(预计耗时:"+result+")"); },1000); }else{ var count = 0; $("#downloadAllCheckedLoad").text("已耗时:"+count+"秒"); zipTimer=setInterval(function() { count++; $("#downloadAllCheckedLoad").text("已耗时:"+count+"秒"); },1000); } }, error:function(){ $("#downloadAllCheckedLoad").text("(无法获取预计耗时)"); } }); // 同时发送压缩下载请求 $.ajax({ type : "POST", url : "homeController/downloadCheckedFiles.ajax", data : { strIdList:faf.filesId, strFidList:faf.foldersId }, dataType : "text", success : function(result) { if(zipTimer!=null){ window.clearInterval(zipTimer); } if (result == "ERROR") { $("#downloadAllCheckedName") .text("提示:压缩过程出错。无法完成压缩,请重试或告知管理员。"); } else { $("#downloadAllCheckedLoad").text(""); $("#downloadAllCheckedName").text("提示:压缩完成!准备开始下载..."); var t = setTimeout( "$('#downloadAllCheckedModal').modal('hide');", 800); // POST提交全部下载请求 var temp = document.createElement("form"); temp.action = 'homeController/downloadCheckedFilesZip.do'; temp.method = "post"; temp.style.display = "none"; var sl = document.createElement("input"); sl.name = 'zipId'; sl.value = result; temp.appendChild(sl); document.body.appendChild(temp); temp.submit(); } }, error : function() { $("#downloadAllCheckedName").text("提示:请求失败。无法完成压缩,请重试或告知管理员。"); } }); } // 删除选中的所有文件 function showDeleteAllCheckedModel() { $('#deleteFileBox').html(""); var faf=getCheckedFilesAndFolders(); $("#dfmbutton").attr('disabled', false); if (faf.size == 0) { $('#deleteFileMessage').html(checkFilesTip); } else { $('#deleteFileBox') .html( ""); $('#deleteFileMessage').text( "提示:确定要彻底删除这" + faf.size + "项么?该操作不可恢复!"); } $('#deleteFileModal').modal('toggle'); } // 删除选中的所有文件 function deleteAllChecked() { // TODO 提交全部删除请求 var faf=getCheckedFilesAndFolders(); $("#dfmbutton").attr('disabled', true); $('#deleteFileMessage').text("提示:正在删除,请稍候..."); $.ajax({ type : "POST", dataType : "text", data : { strIdList : faf.filesId, strFidList : faf.foldersId }, url : "homeController/deleteCheckedFiles.ajax", success : function(result) { if (result == "mustLogin") { window.location.href = "prv/login.html"; } else { if (result == "noAuthorized") { $('#deleteFileMessage').text("提示:您的操作未被授权,删除失败"); $("#dfmbutton").attr('disabled', false); } else if (result == "errorParameter") { $('#deleteFileMessage').text("提示:参数不正确,未能全部删除文件"); $("#dfmbutton").attr('disabled', false); } else if (result == "cannotDeleteFile") { $('#deleteFileMessage').text("提示:出现意外错误,可能未能删除全部文件"); $("#dfmbutton").attr('disabled', false); } else if (result == "deleteFileSuccess") { $('#deleteFileModal').modal('hide'); showFolderView(locationpath); } else { $('#deleteFileMessage').text("提示:出现意外错误,可能未能删除全部文件"); $("#dfmbutton").attr('disabled', false); } } }, error : function() { $('#deleteFileMessage').text("提示:出现意外错误,可能未能删除全部文件"); $("#dfmbutton").attr('disabled', false); } }); } // 播放音乐 function playAudio(fileId) { $('#audioPlayerModal').modal('show'); if(pingInt == null){ pingInt = setInterval("ping()",60000);// 播放中开始计时应答 } if (ap == null) { ap = new APlayer({ container : document.getElementById('aplayer'), lrcType : 3, mutex : true, volume : 0.7, theme:'#EDEDED', audio : [] }); ap.on('pause', function() { $("#playOrPause").html(""); }); ap.on('play', function() { $("#playOrPause").html(""); }); } ap.list.clear(); $.ajax({ url:'homeController/playAudios.ajax', data:{ fileId:fileId }, type:'POST', dataType:'text', success:function(result){ var ail=eval("("+result+")"); // 避免存在恶意标签注入在文件名中 for(var i=0;i" + fname + "[正在上传...]
"); xhr = new XMLHttpRequest();// 这东西类似于servlet里面的request var fd = new FormData();// 用于封装文件数据的对象 fd.append("file", uploadfile);// 将文件对象添加到FormData对象中,字段名为uploadfile fd.append("folderId", locationpath); fd.append("folderConstraint",fc); if(!!newFolderName){ fd.append("newFolderName",newFolderName); } xhr.open("POST", "homeController/doImportFolder.ajax", true);// 上传目标 xhr.upload.addEventListener("progress", importProgress, false);// 这个是对上传进度的监听 // 上面的三个参数分别是:事件名(指定名称)、回调函数、是否冒泡(一般是false即可) xhr.send(fd);// 上传FormData对象 if(pingInt == null){ pingInt = setInterval("ping()",60000);// 上传中开始计时应答 } // 上传结束后执行的回调函数 xhr.onloadend = function() { // 停止应答计时 if(pingInt != null){ window.clearInterval(pingInt); pingInt = null; } if (xhr.status === 200) { // TODO 上传成功 var result = xhr.responseText; if (result == "uploadsuccess") { $("#ils_" + i).text("[已完成]"); var ni=i+1; if(ni < fcount){ iteratorImport(ni,newFolderName); }else{ // 完成全部上传后,清空所有提示信息,并还原上传窗口 isImporting=false; $("#folderpath").removeAttr("disabled"); $("#importFolderLevelBtn").removeAttr("disabled"); $("#importfolder").val(""); $("#folderpath").val(""); $("#importpros").width("0%"); $("#importpros").attr('aria-valuenow',"0"); $("#importbutton").attr('disabled', false); $("#importcount").text(""); $("#importstatus").text(""); $('#importFolderModal').modal('hide'); showFolderView(locationpath); } } else if (result == "uploaderror") { showImportFolderAlert("提示:出现意外错误,文件:[" + fname + "]上传失败,上传被中断。"); $("#ils_" + i).text("[失败]"); } else if (result == "foldersTotalOutOfLimit"){ showImportFolderAlert("提示:该文件夹内存储的文件夹数量已达上限,文件:[" + fname + "]上传失败,上传被中断。"); $("#ils_" + i).text("[失败]"); } else if (result == "filesTotalOutOfLimit"){ showImportFolderAlert("提示:该文件夹内存储的文件数量已达上限,文件:[" + fname + "]上传失败,上传被中断。"); $("#ils_" + i).text("[失败]"); } else { showImportFolderAlert("提示:出现意外错误,文件:[" + fname + "]上传失败,上传被中断。"); $("#ils_" + i).text("[失败]"); } } else { showImportFolderAlert("提示:出现意外错误,文件:[" + fname + "]上传失败,上传被中断。"); $("#ils_" + i).text("[失败]"); } }; } else { showImportFolderAlert("提示:要上传的文件不存在。"); $("#importstatus").prepend( "未找到要上传的文件[失败]
"); } } // 取消文件夹上传 function abortImport(){ isImporting=false; if (xhr != null) { xhr.abort(); } $('#importFolderModal').modal('hide'); showFolderView(locationpath); } // 修改上传文件夹约束等级 function changeImportFolderType(type){ $("#importfoldertype").text(folderTypes[type]); $("#folderpath").attr("folderConstraintLevel",type+""); } // 修改密码 function doChangePassword(){ // 还原提示状态 $("#changepassword_oldepwdbox,#changepassword_newpwdbox,#changepassword_reqnewpwdbox").removeClass("has-error"); $("#changepasswordalertbox").hide(); var change_oldPassword = $("#changepassword_oldpwd").val(); var change_newPassword = $("#changepassword_newpwd").val(); var change_reqNewPassword = $("#changepassword_reqnewpwd").val(); // 输入非空检查 if (change_oldPassword.length == 0) { $("#changepassword_oldepwdbox").addClass("has-error"); $("#changepassword_oldpwd").focus(); return; } if (change_newPassword.length == 0) { $("#changepassword_newpwdbox").addClass("has-error"); $("#changepassword_newpwd").focus(); return; } if (change_reqNewPassword.length == 0) { $("#changepassword_reqnewpwdbox").addClass("has-error"); $("#changepassword_reqnewpwd").focus(); return; } // 确认密码检查 isChangingPassword=true; $("#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton,#changepassword_vercode").attr('disabled', true); if (change_newPassword+"" != change_reqNewPassword+"") { showChangePasswordAlert("提示:两次输入的新密码不一致,请检查确认"); $("#changepassword_newpwdbox").addClass("has-error"); $("#changepassword_reqnewpwdbox").addClass("has-error"); return; } // 以加密方式发送修改密码请求 $.ajax({ url : 'homeController/getPublicKey.ajax', type : 'POST', data : {}, dataType : 'text', success : function(result) { // 获取公钥 var changepwd_publicKeyInfo=eval("("+result+")"); // 生成JSON对象格式的信息 var changePasswordInfo = '{oldPwd:"' + change_oldPassword + '",newPwd:"' + change_newPassword + '",time:"' + changepwd_publicKeyInfo.time + '"}'; var encrypt = new JSEncrypt();// 加密插件对象 encrypt.setPublicKey(changepwd_publicKeyInfo.publicKey);// 设置公钥 var encrypted = encrypt.encrypt(changePasswordInfo);// 进行加密 sendChangePasswordInfo(encrypted); }, error : function() { showChangePasswordAlert("提示:密码修改失败,请检查网络链接或服务器运行状态"); } }); } // 将加密数据发送至服务器并显示操作结果 function sendChangePasswordInfo(encrypted){ $.ajax({ type : "POST", dataType : "text", url : "homeController/doChangePassword.ajax", data : { encrypted : encrypted, vercode : $("#changepassword_vercode").val() }, success : function(result) { $("#changepassword_vccodebox").hide(); isChangingPassword=false; switch (result) { case "success": $('#changePasswordModal').modal('hide'); break; case "mustlogin": showChangePasswordAlert("提示:登录已失效或尚未登录账户,请刷新并登陆账户"); break; case "illegal": showChangePasswordAlert("提示:用户修改密码功能已被禁用,请求被拒绝"); break; case "oldpwderror": showChangePasswordAlert("提示:旧密码输入错误,请求被拒绝"); $("#changepassword_oldepwdbox").addClass("has-error"); break; case "needsubmitvercode": $("#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton").attr('disabled', false); $("#changepassword_vccodebox").html(""); $("#changepassword_vccodebox").show(); isChangingPassword=false; break; case "invalidnewpwd": showChangePasswordAlert("提示:密码修改失败,新密码不合法。新密码的长度需为3-32个字符,且仅支持ISO-8859-1中的字符(推荐使用英文字母、英文符号及阿拉伯数字)。"); break; case "error": showChangePasswordAlert("提示:密码修改失败,修改请求无法通过加密效验(可能是请求耗时过长导致的)"); break; case "cannotchangepwd": showChangePasswordAlert("提示:密码修改失败,发生意外错误,请稍后重试或联系管理员"); break; default: showChangePasswordAlert("提示:密码修改失败,发生未知错误"); break; } }, error : function() { showChangePasswordAlert("提示:密码修改失败,请检查网络链接或服务器运行状态"); } }); } // 显示修改密码错误提示 function showChangePasswordAlert(txt) { isChangingPassword=false; $("#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton,#changepassword_vercode").attr('disabled', false); $("#changepasswordalertbox").show(); $("#changepasswordalertbox").text(txt); } // (修改密码版本的)获取一个新的验证码 function changePasswordGetNewVerCode(){ $("#changepassword_showvercode").attr("src","homeController/getNewVerCode.do?s="+(new Date()).getTime()); } // 获取永久资源链接 function getFileChain(fileId,fileName){ $("#fileChainTextarea").text("正在获取……"); $("#copyChainBtn").attr('disabled', true); $('#fileChainModal').modal('show'); $.ajax({ type : "POST", dataType : "text", url : "homeController/getFileChainKey.ajax", data : { fid : fileId }, success : function(result) { switch (result) { case "ERROR": $("#fileChainTextarea").text("提示:获取失败,请刷新页面或稍后再试。"); break; case "mustlogin": window.location.href = "prv/login.html"; break; default: var getChainFileName=fileName.replace("#","%23").replace("%","%25").replace("?","%3F"); $("#fileChainTextarea").text(encodeURI(window.location.protocol+"//"+window.location.host+"/externalLinksController/chain/"+getChainFileName+"?ckey=")+encodeURIComponent(result)); $("#copyChainBtn").attr('disabled', false); break; } }, error : function() { $("#fileChainTextarea").text("提示:获取失败,无法连接服务器。"); } }); } // 复制链接内容 function copyFileChain(){ let node = document.getElementById('fileChainTextarea');// input框 let issafariBrowser = /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent); if(issafariBrowser){ node.setSelectionRange(0, 9999); }else{ const range = document.createRange(); range.selectNode(node); const selection = window.getSelection(); if(selection.rangeCount > 0) selection.removeAllRanges(); selection.addRange(range); } document.execCommand('copy'); } // 显示公告模态框 function showNoticeModal(){ $('#noticeModal').modal('show'); } // 加载公告内容并初始化公告模态框 function initNoticeModal(){ $("#noticeModalBody").load("resourceController/getNoticeContext.do",function(){ $('#noticeModalBody img').css("max-width","100%"); if(winHeight >= 300){ $('#noticeModalBody').css("max-height",(winHeight - 180)+"px"); }else{ $('#noticeModalBody').css("max-height","300px"); } noticeInited = true; showNoticeModal(); showNoticeBtn(); }); } // 打开主页时自动订阅未阅读过的公告信息并显示,如果该公告已经阅读过则不会显示。 function subscribeNotice(){ $.ajax({ url:'resourceController/getNoticeMD5.ajax', data:{}, type:'POST', dataType:'text', success:function(result){ if(result != ""){ var cookieMd5 = document.cookie.match(new RegExp("(^| )notice_md5=([^;]*)(;|$)")); if(cookieMd5){ if(result == unescape(cookieMd5[2])){ showNoticeBtn(); return; } }else{ cookieMd5 = document.cookie.match(new RegExp("(^| )notice_md5_30=([^;]*)(;|$)")); if(cookieMd5){ if(result == unescape(cookieMd5[2])){ showNoticeBtn(); return; } } } initNoticeModal(); document.cookie = "notice_md5=" + escape(result); } }, error:function(){ alert("错误:无法从服务器获取公告信息,请尝试刷新页面。"); } }); } // 显示“公告”浮动按钮,方便用户手动打开公告 function showNoticeBtn() { $("#shownoticebox").removeClass("hidden"); $("#shownoticebox").addClass("show"); } // 手动显示公告 function showNotice() { if(noticeInited) { showNoticeModal(); }else{ initNoticeModal(); } } // 该方法用于请求并继续加载文件夹视图的后续数据(可能会被迭代调用) function loadingRemainingFolderView(targetId){ // 判断是否正在执行另一个相同的请求,避免重复操作 if(remainingLoadingRequest){ return; } // 计算新的查询偏移量 var newfoldersOffset=0; var newfilesOffset=0; if((folderView.foldersOffset - folderView.selectStep) > 0){ newfoldersOffset = folderView.foldersOffset - folderView.selectStep; } if((folderView.filesOffset - folderView.selectStep) > 0){ newfilesOffset = folderView.filesOffset - folderView.selectStep; } if(newfoldersOffset <= 0 && newfilesOffset <= 0){ originFolderView=$.extend(true, {}, folderView); hiddenLoadingRemaininngBox(); doFixedRow(targetId); return; } var loadingRemainingRate_folders = 1; var loadingRemainingRate_files = 1; if(totalFoldersOffset > 0){ loadingRemainingRate_folders = (totalFoldersOffset - newfoldersOffset) / totalFoldersOffset; } if(totalFilesOffset > 0){ loadingRemainingRate_files = (totalFilesOffset - newfilesOffset) / totalFilesOffset; } var loadingRemainingRate = (loadingRemainingRate_folders + loadingRemainingRate_files)/2; $("#loadingrate").text(parseInt(loadingRemainingRate * 100) + "%"); remainingLoadingRequest = $.ajax({ url:'homeController/getRemainingFolderView.ajax', data:{ fid:locationpath, foldersOffset:newfoldersOffset, filesOffset:newfilesOffset }, type:'POST', dataType:'text', success:function(result){ remainingLoadingRequest = null; switch (result) { case "ERROR": alert("错误:无法加载剩余文件列表,文件数据可能未显示完全,请刷新重试!"); hiddenLoadingRemaininngBox(); doFixedRow(); break; case "NOT_FOUND": case "notAccess": document.cookie = "folder_id=" + escape("root");// 归位记忆路径 case "mustLogin": window.location.href="/"; break; default: folderView.foldersOffset = newfoldersOffset; folderView.filesOffset = newfilesOffset; var remainingFV = eval("("+result+")"); updateFolderTable(remainingFV); updateTheFolderInfo(); if(folderView.foldersOffset > 0 || folderView.filesOffset > 0){ loadingRemainingFolderView(targetId); }else{ originFolderView=$.extend(true, {}, folderView); hiddenLoadingRemaininngBox(); doFixedRow(targetId); } break; } }, error:function(jqXHR, textStatus, errorThrown){ remainingLoadingRequest = null; hiddenLoadingRemaininngBox(); if('abort' != textStatus){ alert("错误:无法连接服务器,文件列表加载被中断。请刷新重试!"); } } }); } // 定位指定文件所在行 function doFixedRow(targetId){ if(targetId && targetId.length > 0){ $("#"+targetId).addClass("info"); $("html,body").animate({scrollTop:$("#"+targetId).offset().top - $(window).height()/2},'slow'); } } // 显示“正在加载文件列表”提示栏 function showLoadingRemaininngBox(){ loadingComplete = false; $("#loadingremaininngbox").addClass("show"); $("#loadingremaininngbox").removeClass("hidden"); $("#searchbtn").attr('disabled','disabled'); } // 隐藏“正在加载文件列表”提示栏 function hiddenLoadingRemaininngBox(){ loadingComplete = true; $("#loadingremaininngbox").removeClass("show"); $("#loadingremaininngbox").addClass("hidden"); $("#searchbtn").removeAttr('disabled'); } // 将加载的后续文件夹视图数据更新至页面上显示 function updateFolderTable(remainingFV){ var authList = folderView.authList; var aD = false; var aR = false; var aL = false; var aO = false; if (checkAuth(authList, "D")) { aD = true; } if (checkAuth(authList, "R")) { aR = true; } if (checkAuth(authList, "L")) { aL = true; } if (checkAuth(authList, "O")){ aO = true; } if(remainingFV.folderList){ if(remainingFV.folderList.length > 0){ for(var i1=remainingFV.folderList.length;i1>0;i1--){ var f=remainingFV.folderList[i1-1]; if(!folderContains(folderView.folderList,f.folderId)){ folderView.folderList.unshift(f); $("[iskfolder=true]:last").after(createNewFolderRow(f,aD,aR,aO)); } } } } if(remainingFV.fileList){ if(remainingFV.fileList.length > 0){ for(var i2=remainingFV.fileList.length;i2>0;i2--){ var fi = remainingFV.fileList[i2-1]; if(!fileContains(folderView.fileList,fi.fileId)){ folderView.fileList.unshift(fi); $("#foldertable").append(createFileRow(fi,aL,aD,aR,aO)); } } } } } // 判断文件夹数组中是否存已在ID相同的某个文件夹 function folderContains(folderList,targetFolderId){ for(var i=folderList.length;i>0;i--){ if(folderList[i-1].folderId == targetFolderId){ return true; } } return false; } // 判断文件数组中是否存已在ID相同的某个文件 function fileContains(fileList,targetFileId){ for(var i=fileList.length;i>0;i--){ if(fileList[i-1].fileId == targetFileId){ return true; } } return false; } // 更新文件夹视图信息 function updateTheFolderInfo(){ $("#fim_statistics").text("共包含 "+folderView.folderList.length+" 个文件夹, "+folderView.fileList.length+" 个文件。"); }