/* 上传下载处理类 */ Namespace.register("U.UP"); //#region 变量 //#region U.UP.FTF = {}; //上传使用集合 //上传使用变量集合 每一个上传生成的上传按钮都是以guid的形式记录下来 U.UP.FTF.EL; //当前上传的元素 //U.UP.FTF.FT = {}; /* U.UP.FTF.WH = 0; U.UP.FTF.TF = false; U.UP.FTF.GS = "*"; */ //#endregion //#region input 上传 /** * html input上传 * * @param {array} 所有需要上传的input * @param {function} 上传成功回调函数 * @param {array} 回调参数 * @param {string} 回调调用地址 允许带参数 ----------http://disk.1473.cn/upload.ashx?aa=aa * @param {boolean} 是否单独上传 * @param {object} 上传的格式 --------- "multipart/form-data" */ U.UP.uploading = function (UDE, UCB, UCT, UAC, UTF, UTP) { //生成传输的iframe if (UDE.length > 0) { var _UDBD = document.body, _UFID = Guid.guidNoDash(); //设置随机的name //已加载一个可处理的iframe 防止页面通过上传刷新页面 U.M.IFO($$("iframe", { "id": _UFID, "name": _UFID, "width": 0, "height": 0, "style": { "display": "none" }, "frameBorder": 0 }, _UDBD), "", [[U.UP.uploadingA, [UDE, UCB, UCT, UAC, UTF, _UFID, UTP]]]); //生成可访问的iframe } } /** * html input上传 * * @param {array} 所有需要上传的input * @param {function} 上传成功回调函数 * @param {array} 回调参数 * @param {string} 回调调用地址 允许带参数 ----------http://disk.1473.cn/upload.ashx?aa=aa * @param {boolean} 是否单独上传 * @param {object} 上传的格式 --------- "multipart/form-data" */ U.UP.uploadingA = function (UDE, UCB, UCT, UAC, UTF, UFID, UTP) { this.contentWindow.name = UFID; //跨域页面必须设置name UDE = U.Ut.isArray(UDE) ? UDE : Array.prototype.slice.apply(UDE); //上传input集 UAC = UAC + (UAC.indexOf("?") > -1 ? "" : "?") + ((US && US.userInfo && US.userInfo.userid) || US.userInfo.userid ? "&UserId=" + (US.userInfo.userid || US.userInfo.userid) : ""); //上传地址 var i = 0, _UL = UDE.length, //上传input长度 _UCE = [], _UCB = UCB, _UDBD = document.body, _URE = { "UpObj": UDE, "context": UCT, "value": "" }, //回调参数设置 _UDFD = $$("form", { "action": UAC, "target": UFID, "encoding": UTP ? UTP : "multipart/form-data", //上传的form "enctype": UTP ? UTP : "multipart/form-data", "method": "post", "name": "loading", "style": { "display": "none" } }, _UDBD); //设置是否分段上传 (UTF) && (_UL = 1, _URE["UpObj"] = UDE.splice(0, 1), _UCB = U.M.apply(this, [[UCB, [_URE]], [U.UP.uploading, [UDE, UCB, UCT, UAC, UTF]]])); UDE = _URE["UpObj"]; //添加上传name for (i; i < _UL; i++) { UDE[i].name = UDE[i].name || UDE[i].id || Guid.newGuid(); _UCE.push($(UDE[i]).replaceC($$("div"))[0]); _UDFD.appendChild(UDE[i]); } //上传开始 _UDFD.submit(); this.complete = ""; //上传异步处理 U.MD.IframeLoad(this, [[U.UP.uploadingAsynF, [this, _UCB, _URE]]]); $(_UDFD).remove(); //清空上传至 for (i = 0; i < _UL; i++) { $(_UCE[i]).replaceC(UDE[i]); }; //if (document.selection) { UDE[i].select(); document.selection.clear(); } else { UDE[i].outerHTML += ""; UDE[i].value = ""; } //清空内容 } /** * 上传结束异步 * * @param {array} 所有需要上传的input * @param {function} 上传成功回调函数 * @param {object} 回调参数 ----------[UpObj] 上传按钮元素 ----------[context] 上传参数 ----------[value] 上传返回值 */ U.UP.uploadingAsynF = function (UDOD, UCB, UDE) { try { (!browser.msie) && (UDOD.src = "about:blank"); setTimeout(function () { try { var _UTH = UDOD.contentWindow.document.body.innerHTML; } catch (e) { } try { _UTH = _UTH || (UDOD.contentWindow.name != UDOD.id ? UDOD.contentWindow.name : _UTH); } catch (e) { } //上传失败 if (_UTH == null) { U.Alert("服务器处理繁忙,上传失败"); } //获取值转化成json对象 try { UDE.value = eval("0,(" + _UTH + ")"); } catch (e) { UDE.value = _UTH; } //返回的值 $(UDOD).remove(); //回调 if (UCB) { UCB(UDE); } }, 0); } catch (e) { } } //#endregion //#region flash上传处理 /** * 添加Flash上传按钮按钮 * * @param {array} 所有需要上传的input * @param {function} 上传成功回调函数 * @param {object} 回调参数 * @return {object} 回调参数 */ U.UP.AddFAN = function (UDOD, UDID, UWH) { UDID = UDID || Guid.newGuid(); //var _UDTD; if ($("object", UDOD).length == 0) {//添加Flash按钮 _UDTD = $$("div", { "innerHTML": '' }); UDOD.insertBefore(_UDTD.firstChild, UDOD.firstChild); } U.UP.FTF[UDID] = {}; //设置初始化 U.UP.FTF.EL = $("*" + UDID, UDOD).addAttrArray({ "width": UWH["width"] ? UWH["width"] : 1, "height": UWH["height"] ? UWH["height"] : 1, "style": { "display": "block" } })[0]; U.UP.FTF[UDID]["EL"] = U.UP.FTF.EL; return U.UP.FTF.EL; /* //返回生成的flash上传按钮 return (U.UP.FTF["EL"] = $("*" + UDID, UDOD).addAttrArray({ "width": UWH["width"] ? UWH["width"] : 1, "height": UWH["height"] ? UWH["height"] : 1, "style": { "display": "block" } })[0]); //设置Flash大小 */ } /** * 添加Flash传值 * * @param {object} 设置的flash上传插件的长宽 ----------[width] 长 ----------[height] 宽 * @param {function} 上传成功回调函数 * @param {string} 回调参数 * @return {object} 回调参数 */ U.UP.FAFZ = function (UWH, UTE, UDE) { var _UCE = U.UP.FTF, _UDOD = _UCE["EL"], _UDID = _UDOD.id || _UDOD.name; //flash 插件元素 _UCE[_UDID].WH = UWH; //大小 _UCE[_UDID].FT = UTE; //大小 _UCE[_UDID].GS = UDE || "*"; //大小 //设置舞台 if (_UDOD && _UDOD.SetStage) { if (!U.UP.FOnload()) { //加载flash return false; } return true; } return false; /* _UCE["WH"] = UWH; //大小 _UCE["FT"] = UTE; //回调函数 _UCE["GS"] = UDE || "*"; //上传类型 */ } //#region //Flash上传初始化 U.UP.FOnload = function () { try { var _UDE = U.UP.FTF; _UDE["EL"].SetStage(_UDE["WH"], _UDE["FT"], _UDE["GS"] || "*"); //加载插件初始化 return true; } catch (e) { return false; } } //上传的错误提示 U.UP.FLEX = function (err) { U.Alert(err); U.M.Console(err); } //添加上传文件 上传文件的显示 U.UP.FLAdd = function (UDE, UL) { var _UDOD = U.UP.FTF.EL, _UDID = _UDOD.ID || _UDOD.name; if (U.UP.FTF[_UDID] && U.UP.FTF[_UDID].FT && U.UP.FTF[_UDID].FT["ADD"]) { U.UP.FTF[_UDID].FT["ADD"](UDE, UL); } } //上传所有文件完毕 U.UP.FLACP = function (UFL) { var _UDOD = U.UP.FTF.EL, _UDID = _UDOD.ID || _UDOD.name; if (U.UP.FTF[_UDID] && U.UP.FTF[_UDID].FT && U.UP.FTF[_UDID].FT["AFCP"]) { U.UP.FTF[_UDID].FT["AFCP"](UFL); } } //上传的进度条 U.UP.FLJD = function (UDE, FID) { var _UDOD = U.UP.FTF.EL, _UDID = _UDOD.ID || _UDOD.name; if (U.UP.FTF[_UDID] && U.UP.FTF[_UDID].FT && U.UP.FTF[_UDID].FT["JDT"]) { U.UP.FTF[_UDID].FT["JDT"](UDE, FID); } } //上传文件成功同时服务端返回了数据 U.UP.FSLCP = function (UDAT, FID) { var _UDOD = U.UP.FTF.EL, _UDID = _UDOD.ID || _UDOD.name; if (U.UP.FTF[_UDID] && U.UP.FTF[_UDID].FT && U.UP.FTF[_UDID].FT["FCP"]) { U.UP.FTF[_UDID].FT["FCP"](UDAT, FID); } } //上传文件判断是否存在 U.UP.IsFUp = function (UWJL, FID) { var _UDOD = U.UP.FTF.EL, _UDID = _UDOD.ID || _UDOD.name; if (U.UP.FTF[_UDID] && U.UP.FTF[_UDID].FT && U.UP.FTF[_UDID].FT["FUP"]) { U.UP.FTF[_UDID].FT["FUP"](UWJL, FID); } } //上传单个文件完毕 U.UP.FLCP = function (data) { U.Alert("等待服务器的响应..."); } //#endregion //#endregion //#region 下载 /** * 文件下载区域 * * @param {string} 上传成功回调函数 * @param {number} 上传成功回调函数 * @param {function} 回调参数 */ U.UP.FileDL = function (UFN, USN, UTF) { var _userid = US.userInfo.userid, _UIE = _userid ? _userid : U.M.GetCookie("usestudiosso", "userid") || []; if (_userid || _UIE[0]) { //用户登录处理 (!_userid) && (US.userInfo.userid = _UIE[0]); U.UP.uploading([$$("input", { "type": "text", "value": UFN, "name": "filename" }), $$("input", { "type": "text", "value": USN, "name": "filepath" })], //调用访问传参接口 null, null, "http://main.1473.cn/USupfile.ashx?iframename=" + (UTF || "UploadFile"), false); } else { //未登录用户处理下载 if (window.location.href.indexOf("www.1473.cn")) { //在1473 try { //可以登录 U.U.L.DLTC(3); } catch (e) { U.Alert("请在云端登录"); } } else { U.UI.Confirm("是否跳转到云端进行下载", function () { window.location.href = ""; }) } } } /** * 文件指定的格式下载 * * @param {string} 下载文件的ID * @param {string} 下载文件的格式 */ U.UP.FileGS = function (UFID, UTP) { U.UP.uploading([$$("input", { "type": "text", "value": UFID, "name": "id" }), $$("input", { "type": "text", "value": UTP, "name": "type" })], null, null, "http://main.1473.cn/USupfile.ashx?iframename=DownType", false); } //#endregion //#region 帮助处理 /** * 传入类型返回类型中文名与类型图片所在坐标 * * @param {string} 文件类型 */ U.UP.FFT = function (UTF) { UTF = UTF.toLowerCase(); var i, _UKE, _UDE = ["folder", "folderencrypt", "png,jpg,bmp,gif", "doc,docx,uw", "xls,xlsx,ue", "ppt,pptx", "txt", "wmv,video", "mp3", "rar,zip"], //具有系统图标的文件类型 _UAE = [["文件夹", "-6px -41px", "-169px -5px"], ["文件夹", "-659px -42px", "-736px -77px"], //文件类型对应 ["图片文件", "-593px -402px", "-61px -5px"], ["Word文档", "-155px -41px", "-511px -198px", "-477px -10px", "-65px -420px"], ["Excel文档", "-297px -41px", "-584px -198px;", "-325px -10px", "-290px -50px", "-120px -420px"], ["PPT幻灯片", "-227px -41px", "-548px -198px", "-220px -420px"], ["Txt文本文档", "-84px -41px", "-477px -198px", "-170px -420px"], ["视频文件", "-503px -41px", "-760px -42px"], ["Mp3音乐文件", "-438px -41px", "-734px -43px", "-15px -420px", "-175px -10px"], ["Rar压缩文件", "-368px -41px", "-619px -199px", "-270px -420px"]]; //根据类型筛选指定的 for (i = 0; i < _UDE.length; i++) { if (_UDE[i].split(",").indexOf(UTF) > -1) { _UKE = _UAE[i]; break; } }; //默认都有系统文件的图标 (!_UKE) && (_UKE = ["系统文件", "-575px -41px", "-478px -230px", "-320px -420px"]); //位置定位 for (i = 1; i < _UKE.length; i++) { _UKE[i] = "background-position:" + _UKE[i] + ";" }; return _UKE; } /** * 设置文件下载 * * @param {string} 上传成功回调函数 * @param {string} 上传成功回调函数 */ U.UP.Down = function (UN, UCT) { if ("createElementNS" in document) { //html5 文件另存为 (!UCT) && (UCT = document.documentElement.outerHTML); var _UDAD, _UWE = window.URL || window.webkitURL || window, _UDE = new Blob[UCT]; _UDAD = document.createElementNS("http://www.w3.org/1999/xhtml", "a"); _UDAD.href = _UWE.createObjectURL(_UDE); _UDAD.download = UN; U.M.IEVENT(_UDAD, "click"); } else { //IE文件另存为 if (UCT) { var _UDOD = $$("iframe", { "display": "none" }); U.M.IFO(_UDOD, UCT, function () { _UDOD.contextWindow.document.execCommand("SaveAs"); }); } else { document.execCommand("SaveAs"); } //当前文档保存 } } /** * 获取上传的名字和类型 * * @param {string} 文件名+类型 * @return {array} ----------[0] 文件名 ----------[1] 文件类型 */ U.UP.GetUpName = function (UEHL) { UEHL = (UEHL.value || UEHL).toLocaleLowerCase(); var _UI = UEHL.lastIndexOf("."); return [UEHL.substr(UEHL.lastIndexOf('\\') + 1, _UI), UEHL.substr(_UI + 1)]; //文件名 } /** * 判断是否为图片类型,UFN为文件名,比如"aaaa.jpg" * * @param {string} 文件名 * @param {boolean} 是否为图片 */ U.UP.IsImg = function (UFN) { var _UTF = false, _UE = U.UP.GetUpName(UFN)[1].toLowerCase(), //获取文件类型 同时小写 _UIF = "jpg,gif,png,bmp,jpeg,JPG,GIF,BMP,PNG,JPEG"; //获取图片的所有类型 (_UE && _UIF.indexOf(_UE) > -1) && (_UTF = true); //判断是否是图片 return _UTF; } /** * 判断大小 * * @param {number} 数字1 * @param {number} 数字2 * @param {boolean} 返回数字1是否大于数字2 */ U.UP.IsSizeS = function (UFO, UFT) { return (UFO > UFT); } /** * 计算文件大小 * * @param {string} 文件大小 * @param {string} 最大文件类型 */ U.UP.FileSize = function (UIS) { UIS = UIS || 0; var _UDW = (UIS + "").replace(U.MS.Num, ""), _UDE = ["B", "KB", "M", "G", "TB"], //文件大小处理 i = _UDE.indexOf(_UDW); //筛选到最大单位处理 i = i == -1 ? 0 : i; UIS = parseInt(UIS); while (UIS > 1024) { UIS /= 1024; i++; }; //保留两个小数点 return UIS.toFixed(2) + _UDE[i]; } /** * 获取最小单位的大小 * * @param {string} 上传成功回调函数 */ U.UP.GetSfileS = function (UIS) { var i = 0, _UDE = ["B", "KB", "M", "G", "TB"], //指定的文件类型 _UDW = (UIS + "").replace(U.MS.Num, ""), //获取类型 _UIE = _UDE.indexOf(_UDW, null, true); //单位位置 return parseFloat(UIS) * Math.pow(1024, _UIE); //获取最大单位 } //#endregion