U.DK.UP.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549
  1. Namespace.register("U.Dk.UP"); //Disk上传的命名空间
  2. //#region 上传区域 Html5 Flash html
  3. U.Dk.UP.FTF = {
  4. "FL": [] //所有上传的文件数组
  5. };
  6. /**
  7. * 生成上传的点击框
  8. * @param {string} 需要加载上传框的元素
  9. * @param {object} 加载上传框的flash的信息
  10. * @param {string} 用户的id
  11. * @param {boolean} 是否允许直接加载flash框 ,如果是true则不需要权限直接加载
  12. */
  13. U.Dk.UP.SCXWPOP = function (el, flashinfo, userid, ifload) {
  14. var _iscreate, //查看flash是否创建成功
  15. _uploadinfo = U.Dk.UP.FTF, //flash上传使用的全局变量
  16. _diskinfo = U.Dk.DiskOperatingSwitch(userid || US.userInfo.userid), //获取用户网盘的信息
  17. _permis = U.Dk.HP.WPCZQXHQ(_diskinfo[1][1]); //获取上传的权限 包含ftp中有只允许上传的情况 只允许下载的情况 或者是在他人云盘中不允许上传等等具体看函数内部的注释
  18. //如果用户需要上传判断用户是否需要通登录后才能使用,如果第四个传参是允许加载那么就直接加载
  19. if (!U.U.L.isLogin(3) || _permis[0] || ifload == true) {
  20. //允许上传
  21. //添加属性设置
  22. flashinfo["width"] = flashinfo["width"] || $(el).width();
  23. flashinfo["height"] = flashinfo["height"] || $(el).height();
  24. //全局变量记录需要创建的flash
  25. _uploadinfo["FUN"] = flashinfo;
  26. //添加flash按钮
  27. U.UP.AddFAN(el, flashinfo["ID"] + userid, flashinfo);
  28. //设置上传按钮的回调事件
  29. _UTF = U.UP.FAFZ(_$(flashinfo).GZDL["width", "height"],
  30. {
  31. EX: U.Dk.UP.XWPOPC, //错误处理回调函数
  32. ADD: U.Dk.UP.XSSCXWPOP, //选择文件回调函数
  33. FUP: U.Dk.UP.XWPOPL, //获取文件的上传流
  34. JDT: U.Dk.UP.XWPJDT, //上传文件的进度条处理
  35. CP: U.Dk.UP.XWPCB, //单个文件上传成功的回调函数
  36. FCP: U.Dk.UP.XWPCBC, //单个文件上传成功后,得到服务器的响应值处理,和CP不一样的是这里是得到了返回值,上面的只是文件已经传输到服务器了。
  37. ACP: U.Dk.UP.XWPGBSC//全部文件都上传成功后执行
  38. }
  39. , flashinfo["GS"]); //设置上传响应回调
  40. return true;
  41. }
  42. //查看flash是否创建成功 创建失败移除元素
  43. if (_iscreate == null) {
  44. ($("object", el) || $("embed", el)).remove();
  45. }
  46. return false;
  47. }
  48. /**
  49. * 判断用户是否具有权限生成上传的点击框
  50. * @param {string} 需要上传用户的id
  51. */
  52. U.Dk.UP.XWPOP = function (userid) {
  53. var _diskinfo = U.Dk.DiskOperatingSwitch(userid); //获取用户网盘信息
  54. //如果用户网盘加载成功点击上传才有效
  55. if (_diskinfo) {
  56. var _permit = U.Dk.HP.WPCZQXHQ(_diskinfo[1][1]); //获取该目录的上传权限
  57. if (_permit[0]) { //允许上传
  58. var _flashforms = U.Dk.UP.SCSCK(); //创建、弹出上传框
  59. U.D.PopupWindow(_flashforms); //设置上传框弹出
  60. }
  61. }
  62. }
  63. /**
  64. * 生成上传的点击框
  65. * @param {array} 需要加载上传框的元素
  66. */
  67. U.Dk.UP.XSSCXWPOP = function (uploadfiles) {
  68. var _flashinfo = U.Dk.UP.FTF, //上传的全局变量
  69. _diskinfo = US.Disk.UserDisk, //用户网盘信息
  70. _uploadinfo = _flashinfo["FUN"], //flash上传信息
  71. _flashel = U.UP.FTF["EL"]; //flash元素
  72. //判断上传信息中是否通过打开网盘的信息上传
  73. if (_uploadinfo["DS"]) {
  74. U.Dk.UP.SCSCK(); //弹出上传框
  75. }
  76. U.Dk.UP.UAXWP(uploadfiles); //显示需要上传的内容
  77. }
  78. /**
  79. * 弹出用户网盘信息
  80. */
  81. U.Dk.UP.SCSCK = function () {
  82. var _UDOD, _UDTD, _panel, _UDCD;
  83. if ($("#UD_SYVO")[0]) {
  84. return $("#UD_SYVO").Center()[0];
  85. }
  86. else {
  87. if (!(_UDOD = $("#UD_SYV")[0])) {
  88. _UDOD = $$("div", { "id": "UD_SYV", "className": "UD_SYV", "onmousedown": [[U.D.DragMouseDown, ["this"]]] });
  89. _UDTD = $$("div", { "className": "UD_SYVO" }, _UDOD);
  90. _panel = $$("div", { "className": "UD_SYVT" }, _UDTD);
  91. $$("div", { "className": "UD_SYVTO", "innerHTML": "普通上传" }, _panel);
  92. $$("div", { "className": "UD_SYVZ", "onmousedown": U.M.StopBubble, "innerHTML": " 提示声明: 严谨上传包括反动、暴力、色情、违法及侵权内容的文件;严格遵守保密法律法规,任何危害用户或犯法的行为,都必须受到法律追究。" }, _UDTD);
  93. $$("div", { "className": "UD_SYVC", "id": "UD_SYVC", "onmousedown": U.M.StopBubble }, _UDTD);
  94. _panel = $$("div", { "className": "UD_SYVD", "onmousedown": U.M.StopBubble }, _UDTD);
  95. _UDCD = $$("div", { "className": "UD_SYVDR" }, _panel); $$("div", { "className": "UD_SYVDRO", "innerHTML": "添加文件" }, _UDCD); $$("div", { "className": "UD_SYVDRO UD_SYVDRT", "id": "UD_SYVDRT" }, _UDCD);
  96. $$("div", { "className": "UD_SYMI UD_SYI UD_SYVB", "title": "关闭", "onmousedown": U.M.StopBubble, "onclick": [[U.D.CloseWindow, [_UDOD]]] }, _UDOD);
  97. $("body").append(_UDOD);
  98. }
  99. _UDOD.style.display = "block";
  100. return U.UI.Form({ id: "UD_SYVO", style: { width: "720px", height: "520px;" }, content: _UDOD, title: "<div class='UD_SYF_STI'>文件上传</div>", hst: { style: { "padding": "0"}} }).be;
  101. }
  102. }
  103. /**
  104. * 上传文件权限处理和过滤
  105. * @param {array} 上传的文件数组
  106. */
  107. U.Dk.UP.UAXWP = function (uploadfiles) {
  108. try {
  109. var i, j, _panel,
  110. _fileslength, //需要上传的文件夹的文件长度
  111. _uploadlength, //根据条件得到的文件夹大小
  112. _diskinfo = US.Disk.UserDisk, //当前网盘
  113. _length = uploadfiles.length, //用户选择上传的数量
  114. _flashinfo = U.Dk.UP.FTF, //flash的全局变量
  115. _allfiles = _flashinfo["FL"], //获取所有需要上传的文件
  116. _uploaddiv = _diskinfo ? _diskinfo[1][1] : US.FG, //获取上传到那个目录的id
  117. _uploadcontent = $("#UD_SYVC"); //上传区域
  118. //如果上传文件是上传到指定目录中的处理
  119. if (_diskinfo && _diskinfo[4][_uploaddiv]) {
  120. _fileslength = _$(_diskinfo[4][_uploaddiv].Child).Select({ "filetype": 1 }).length; //获取当前要上传的目录的文件长度
  121. _uploadlength = (1000 - _fileslength) > _length ? _length : 1000 - _fileslength; //该目录能上传的大小
  122. uploadfiles.slice(0, _uploadlength); //截取能上传后的文件
  123. j = _length - _uploadlength; //根据上面的条件如果移除了上传的控件则通知flash同步删除 ,获取需要移除的文件数
  124. for (i = 0; i < j; i++) { //循环移除
  125. U.UP.FTF["EL"].DF(_length - i - 1, _allfiles.length - 1); //移除
  126. }
  127. }
  128. //判断是否还有文件可以上传
  129. if (uploadfiles.length) {
  130. _allfiles.push(uploadfiles); //添加一个上传等待
  131. //给每个需要上传的变量添加下面的值
  132. U.Ut.AddArr(uploadfiles, {
  133. "UGE": _diskinfo, //上传到那个网盘
  134. "UFN": _flashinfo["FUN"], //上传成功的回调
  135. "userid": _diskinfo ? _diskinfo[1][2] : US.userInfo.userid, //上传到那个用户
  136. "ID": _uploaddiv, //上传到那个目录的id
  137. "URL": _flashinfo["FUN"]["URL"], //上传的地址
  138. "SO": U.UP.FTF["EL"] //上传对应的flash按钮
  139. });
  140. U.Dk.UP.PrintUploadFiles(uploadfiles); //打印需要上传的信息
  141. U.Dk.UP.XWPOPX(0, 0, uploadfiles[0]); //这里主要的作用是连续点击上传,多次上传排序上传
  142. }
  143. else {//文件数量限制处理
  144. U.Alert(_length == uploadfiles.length ? "上传文件格式不符合要求!" : "文件超过最大范围");
  145. U.UP.FTF["EL"].Delqy(_UPE.length);
  146. }
  147. }
  148. catch (e) { }
  149. }
  150. /**
  151. * 打印上传的信息
  152. * @param {array} 上传的文件数组
  153. */
  154. U.Dk.UP.PrintUploadFiles = function (uploadfiles) {
  155. var _type,
  156. _info,
  157. _uploaddiv,
  158. _panel,
  159. _panel_one,
  160. _frag = $$("frag");
  161. for (i = 0; i < uploadfiles.length; i++) {
  162. _type = uploadfiles[i]["type"]; //获取上传文件的后缀
  163. _info = U.Dk.HP.GetIcon(_type); // U.UP.XWPGYS(_type); //获取上传文件格式的的样式
  164. uploadfiles[i].FID = Guid.newGuid(); //上传文件唯一识别id
  165. uploadfiles[i]["UDOD"] = _uploaddiv = $$("div", { "className": "UD_SYVCO" }, _frag);
  166. _panel = $$("div", { "className": "UD_SYVCOO" }, _uploaddiv);
  167. _uploaddiv = $$("div", { "className": "UD_SYVCOI UD_SYID " + _info.classname[0] }, _panel);
  168. if (_info.name == "文档") {
  169. $$("div", { "className": "UD_SYVCOION", "innerHTML": _type }, _uploaddiv)
  170. }
  171. _uploaddiv = $$("div", { "className": "UD_SYVCOT" }, _panel);
  172. $$("div", { "className": "UD_SYVCOTS UTDF", "innerHTML": uploadfiles[i].name }, _uploaddiv);
  173. $$("div", { "className": "UD_SYVCOTC", "innerHTML": "分类:" + _info.name }, _uploaddiv);
  174. $$("div", { "className": "UD_SYVCOTX", "innerHTML": "容量大小:" + U.UP.FileSize(uploadfiles[i]["size"]) }, _uploaddiv);
  175. _uploaddiv = $$("div", { "className": "UD_SYVCOF" }, _panel);
  176. _panel_one = $$("div", { "className": "UD_SYVCOFL" }, _uploaddiv);
  177. $$("img", { "title": "点击查看", "onerror": U.M.ImgError, "src": U.M.GetImgU(US.userInfo.UserThumbnailImageHead), "onclick": [[U.M.StopBubble], [U.U.I.ViewOtherUserInfo, [US.userInfo.userid]]] }, _panel_one);
  178. $$("div", { "className": "UD_SYVCOFR", "innerHTML": US.userInfo.UserNickName }, _uploaddiv);
  179. _uploaddiv = $$("div", { "className": "UD_SYVCOS UTDF" }, _panel);
  180. $$("div", { "className": "UD_SYVCOSN", "innerHTML": "准备上传" }, _uploaddiv);
  181. $$("div", { "className": "UD_SYVCOSI UD_SYID" }, _uploaddiv);
  182. _panel_one = $$("div", { "className": "UD_SYVCOC UD_SYVCOX", "title": "等待响应..." }, _uploaddiv);
  183. $$("img", { "src": US.ms + "img/ULG.gif" }, _panel_one);
  184. $$("div", { "className": "UD_SYVCOX", "titlle": "点击撤销删除上传", "innerHTML": "撤销", "onclick": [[U.Dk.UP.XWPSCWJ, [_uploaddiv, uploadfiles[i]]]] }, _panel);
  185. uploadfiles[i]["JD"] = $$("div", { "className": "UD_SYVCOU" }, _uploaddiv);
  186. }
  187. _uploadcontent.append(_frag);
  188. }
  189. /**
  190. * 上传文件处理
  191. * @param {array} 文件所在全局变量U.Dk.UP.FTF["FL"]的位置
  192. * @param {array} 文件所在全局变量U.Dk.UP.FTF["FL"]中的其中一个的文件集合数组的位置
  193. * @param {array} 需要上传的文件信息
  194. */
  195. U.Dk.UP.XWPOPX = function (allfilesnum, filesnum, uploadfiles) {
  196. try {
  197. //判断文件是否可以上传,如果可以就调用flash上传接口
  198. if (U.Dk.UP.ISFLUP(uploadfiles) === true) {
  199. uploadfiles.LO = "yes"; //设置文件正在上传的说明
  200. uploadfiles["SO"].UpLoad(allfilesnum, filesnum, uploadfiles.FID); //调用flash的上传接口
  201. }
  202. //否则这里直接删除该文件的删除
  203. else {
  204. //获取删除按钮,执行点击事件,删除
  205. var _child = $(uploadfiles["UDOD"]).childg(0, 0).Child();
  206. _child[_child.length - 1].onclick();
  207. }
  208. }
  209. catch (e) {
  210. U.Dk.UP.XWPSCWJ(uploadfiles.UDOD, uploadfiles);
  211. U.Alert("添加文件错误,请重新上传");
  212. }
  213. }
  214. /**
  215. * 上传文件获取文件流后的处理
  216. * @param {string} 文件的md5值
  217. * @param {string} 需要上传的文件的唯一识别id
  218. */
  219. U.Dk.UP.XWPOPL = function (md5, fileid) {
  220. var _tempname, //临时文件上传到临时文件或者是临时图片的名字
  221. _groupid = "", //文件对应的群id
  222. _permitdir, //网盘上传的时候需要判断权限,获取权限的上传id等
  223. _fileinfo = U.Dk.UP.XWPSCWZC(fileid)[2], //获取上传文件所在的位置
  224. _diskinfo = _fileinfo.UGE, //获取用户操作的网盘信息
  225. _isimg = U.UP.IsImg(_fileinfo.type.substr(1)); //判断文件的后缀是否为图片
  226. //在网盘中上传生成链接处理
  227. if (!_fileinfo["UFN"]["URL"]) {
  228. _permitdir = U.Dk.HP.WPCZQXHQ(_fileinfo.ID, _diskinfo)[0]; //获取上传目录的权限信息
  229. _permitdir = _permitdir[_permitdir.length - 1]; //该目录归属的一级目录 包含 我的ftp 我的电脑 我的图片等
  230. //下面获取用户的群id
  231. if (_permitdir.UserDirectoryID == US.SG) { //私密空间处理群id
  232. _groupid = "true";
  233. }
  234. else if (_permitdir.UserDirectoryID == US.FG) { //ftp处理
  235. _groupid = _diskinfo[1][2];
  236. }
  237. else if (_permitdir.GroupID) { //群文档处理
  238. _groupid = _permitdir.GroupID;
  239. }
  240. //生成网盘上传链接
  241. _fileinfo.URL = "http://main.1473.cn/USupfile.ashx?iframename=UploadFlashfile&DirectoryId=" + _fileinfo.ID + "&Encrypt=" + _groupid; //上传地址
  242. }
  243. //临时文件上传
  244. else {
  245. _tempname = _isimg ? "临时图片" : "临时文件";
  246. _fileinfo.ID = ""; //上传目录的ID
  247. }
  248. //根据用户的md5值判断用户是否需要上传,如果需要上传则需要执行上传处理,如果已经存在后台直接给用户生成文件路径等录入数据库
  249. U.A.Request(US.Auth, ["IfFileExistInsertDB", _fileinfo.ID, _groupid, _fileinfo.size, md5, _fileinfo.type.substr(1), _fileinfo.name]), U.Dk.UP.AsynXWPOPL, ["", _fileinfo]; //判断上传文件是否存在
  250. }
  251. /**
  252. * 获取文件流异步
  253. * @param {object} 用md5去判断上传的文件是否需要上传
  254. */
  255. U.Dk.UP.AsynXWPOPL = function (r) {
  256. var _userid = US.userInfo.userid, //当前登录用户的id
  257. context = r.context, //异步的传参
  258. _fileinfo = context[1], //上传文件的信息
  259. _filenum = U.Dk.UP.XWPSCWZC(_fileinfo.FID); //根据文件的id获取在U.Dk.UP.FTF["FL"]中的位置及在U.Dk.UP.FTF["FL"][i]中的位置
  260. r = r.value;
  261. //获取服务器返回的值,如果服务器响应出问题了,eval的时候就会报错。
  262. try {
  263. r = eval(r)[0];
  264. }
  265. catch (e) {
  266. }
  267. //当用户想上传的文件已经在数据库里存在了,那么后台会执行复制数据的操作。
  268. if (r) {
  269. U.Dk.UP.XWPTJ(r, _fileinfo);
  270. }
  271. //否则调用flash里面的函数执行用户的上传操作。
  272. else {
  273. fileinfo["SO"].URRUP(fileinfo["URL"] + "&UserId=" + _userid + "&IsF=true", _fileinfo.FID, _filenum[0], _filenum[1]);
  274. }
  275. }
  276. /**
  277. * 上传文件进度条处理
  278. * @param {object} 进度条的值 Loaded 现在的进度 Total 中进度
  279. * @param {object} 上传文件的唯一识别id
  280. * @param {object} 用md5去判断上传的文件是否需要上传
  281. */
  282. U.Dk.UP.XWPJDT = function (progress, fileid, msg) {
  283. var _fileinfo = U.Dk.UP.XWPSCWZC(fileid)[2], //根据上传文件唯一识别的id获取上传文件的信息
  284. _progresschilds = $(_fileinfo["UDOD"]).childg(0, 0).childg(0, 3).Child(), //获取上传文件进度条元素
  285. _progress = Math.floor((progress["Loaded"] / progress["Total"]) * 100); //获取进度的百分比
  286. _progresschilds[0].innerText = msg; //上传信息提醒,包括准备上传、正在解析、上传中
  287. _fileinfo["JD"].style.width = _progress + "%"; //上传的进度样式
  288. _progresschilds[1].style.display = "none"; //上传成功后的√
  289. _progresschilds[2].style.display = "block"; //loading
  290. }
  291. //文件单个上传完毕
  292. U.Dk.UP.XWPCB = function (uploadfiles) {
  293. // U.Alert("文件已传输,等待服务器响应...");
  294. }
  295. /**
  296. * 上传文件成功返回上传文件值
  297. * @param {object} 获取服务器返回值
  298. * @param {string} 上传文件的唯一识别id
  299. */
  300. U.Dk.UP.XWPCBC = function (r, fileid) {
  301. var _data = r.data, //获取服务器返回值
  302. _fileinfo = U.Dk.UP.XWPSCWZC(fileid); //根据文件的唯一识别id获取文件的信息
  303. //获取从服务器获取的值,这里加一个错误处理,因为如果后台出现了错误,那么eval的过程就会失败
  304. try {
  305. _data = eval("0," + _data);
  306. }
  307. catch (e) {
  308. }
  309. //文件上传成功
  310. if (_data) {
  311. U.Dk.UP.XWPTJ({
  312. "UserFilesServerName": _data[0], //上传成功后存在fs.1473.cn的地址
  313. "UseFilesServerThumbnailName": _data[1], //如果是图片上传,那么这里有缩略图的地址
  314. "UserFilesID": _data[2], //文件在数据的id
  315. "size": _data[3], //文件的大小
  316. "UserDirectoryEncrypt": _data[4], //文件的加密情况,这里和分组id是一样的
  317. "UserDirectoryParentID": _data[5] //文件归属的目录id
  318. }, _fileinfo[2]);
  319. }
  320. }
  321. /**
  322. * 上传成功直接添加
  323. * @param {object} 获取服务器返回值
  324. * @param {string} 上传文件的唯一识别id
  325. */
  326. U.Dk.UP.XWPTJ = function (uploadinfo, uploadfile) {
  327. var _userinfo = US.userInfo, //上传用户的信息
  328. _diskinfo = uploadfile.UGE, //上传到指定网盘的用户网盘数据
  329. _currentdisk = US.Disk.UserDisk, //当前使用的网盘数据
  330. _extendtype = uploadfile.type.substr(1), //上传文件的后缀名
  331. _img = uploadinfo.UseFilesServerThumbnailName, //上传文件展示到网盘的图片
  332. _groupid = uploadinfo.UserDirectoryEncrypt.length == 36 ? uploadinfo.UserDirectoryEncrypt : "",
  333. //上传文件成功后,由前端的数据结构生成一个数据实体,实际传参请参考函数里面的数据结构
  334. _fileinfo = new U.Dk.M.Entity(
  335. uploadinfo.UserFilesID, //上传文件的id
  336. uploadfile.size, //上传文件的大小
  337. uploadfile.ID, //上传文件对应的目录id
  338. uploadfile.name.addEllipsis(20), //上传文件的简写名
  339. uploadfile.name, //上传文件的名字
  340. _extendtype, //上传文件的后缀
  341. uploadinfo.UserFilesServerName, //上传文件的服务器地址
  342. U.MT.toTimeStamp(new Date()), //上传文件成功的时间
  343. _img ? _img : U.UP.FFT(_extendtype)[1], //上传文件展示到网盘的图片
  344. 9999, //上传文件的层次,这里文件是没有层次的,所以以9999区表达
  345. null, //文件的修改时间
  346. uploadinfo.UserDirectoryEncrypt, //上传文件的加密或者是限制
  347. 1, //标识该文件在网盘中识别为文件
  348. "", //上传文件的描述
  349. _groupid, //归属的群id
  350. "", //uw office内容
  351. _userinfo.UserId, //归属用户的id
  352. _userinfo.UserNickName, //归属用户的名字
  353. _userinfo.UserName, //归属用户的用户名
  354. _userinfo.UserThumbnailImageHead //归属用户的头像
  355. );
  356. //如果是上传到网盘的处理
  357. if (_diskinfo) {
  358. //添加文件到网盘 0是以数组形式展示所有的文件
  359. _diskinfo[0].push(_fileinfo);
  360. //添加文件到网盘 1是以object形式展示所有的文件
  361. _diskinfo[4][_fileinfo.UserDirectoryID] = _fileinfo;
  362. //判断是否有上级目录,这里是在上级目录中添加一个child孩子节点,把上传的文件添加到目录中
  363. if (_diskinfo[4][uploadfile.ID]) {
  364. if (!_diskinfo[4][uploadfile.ID].Child) {
  365. _diskinfo[4][uploadfile.ID].Child = []
  366. }
  367. _diskinfo[4][uploadfile.ID].Child.push(_fileinfo);
  368. }
  369. //设置用户网盘的信息
  370. _diskinfo[1][0].FilesCount += 1; //文件数
  371. _diskinfo[1][0].FileSize += uploadfile.size; //文件大小
  372. //添加成功后,显示在网盘中
  373. U.Dk.RE.AsynWPJQ(_diskinfo[1][2], [_fileinfo], null, true)
  374. }
  375. U.Dk.UP.XWPSCWJ(uploadfile["UDOD"], uploadfile); //单个文件上传成功后,排队让下一个文件执行,同时销毁刚刚上传的文件
  376. }
  377. /**
  378. * 移除当前上传元素,排队向下上传处理
  379. * @param {element} 需要移除的元素
  380. * @param {object} 上传文件的信息
  381. */
  382. U.Dk.UP.XWPSCWJ = function (uploadel, uploadfile) {
  383. var i, j, _UAE,
  384. _allfiles = U.Dk.UP.FTF["FL"],
  385. _fileinfo = U.Dk.UP.XWPSCWZC(uploadfile.FID), //根据文件的id获取在U.Dk.UP.FTF["FL"]中的位置及在U.Dk.UP.FTF["FL"][i]中的位置
  386. _allfilesnum = _fileinfo[1], //文件在U.Dk.UP.FTF["FL"]中的位置
  387. _filesnum = _fileinfo[0]; //文件在U.Dk.UP.FTF["FL"][i]中的位置
  388. $(uploadel).remove(); //上传成功后删除上传的元素
  389. if (_filesnum != -1) { //实体存在
  390. //移除一个上传文件
  391. _allfiles[_allfilesnum].splice(_filesnum, 1)[0];
  392. //如果在移除的文件是该多个flash上传中的其中一个的最后一个上传,那么直接删除上传数组
  393. if (!_allfiles[_allfilesnum].length) {
  394. _allfiles.splice(_allfilesnum, 1);
  395. }
  396. uploadfile["SO"].DF(_filesnum, _allfilesnum); //flash中删除上传。
  397. //判断上传文件的上传状态,如果是正在上传的文件删除,那么需要向下执行上传文件
  398. if (uploadfile["LO"]) {
  399. //如果还有文件需要上传
  400. if (_allfiles.length) {
  401. //利用排队的方式执行文件上传
  402. for (i = 0; i < _allfiles.length; i++) { //从所有的上传文件数组里排队
  403. for (j = 0; j < _allfiles[i].length; j++) { //在fileslist中排队筛选
  404. if (!_allfiles[i][j]["LO"]) { //如果该文件的状态没有在上传中,那么就直接上传
  405. U.Dk.UP.XWPOPX(j, i, _allfiles[i][j]); //调用上传处理
  406. break;
  407. }
  408. }
  409. }
  410. }
  411. else {
  412. U.Dk.UP.XWPGBSC(); //清空上传框
  413. }
  414. }
  415. }
  416. }
  417. /**
  418. * 清空上传框处理
  419. */
  420. U.Dk.UP.XWPGBSC = function () {
  421. var _flashinfo = U.Dk.UP.FTF["FL"]; //flash的信息
  422. if (_flashinfo.length && _flashinfo[0][0]) {
  423. $("#UD_SYVC")[0].innerText = ""; //清空上传
  424. _flashinfo[0][0]["SO"].DAF(); //调用flash执行flash的停止上传的处理
  425. }
  426. }
  427. /**
  428. * 获取上传文件所在的位置
  429. * @param {object} 错误消息
  430. * @return {array} 上传文件的位置及信息
  431. * 0 上传文件在一个flashfiles的位置
  432. * 1 上传文件在多个flashfiles中其中一个flashfiles的位置
  433. * 2 找到上传文件的信息
  434. */
  435. U.Dk.UP.XWPOPC = function (errorinfo) {
  436. if (errorinfo.message) { //有错误消息
  437. var _meeage = "上传处理失败:" + errorinfo.message; //上传错误信息
  438. if (UE.errorID == 1502) { //当错误编码是1502时候我们弹出用户可理解的错误
  439. _meeage = "文件太大,电脑内存不足";
  440. }
  441. U.Alert(_meeage); //弹出错误
  442. U.M.Console(UE); //控制台输出错误
  443. }
  444. }
  445. //
  446. /**
  447. * 获取上传文件所在的位置
  448. * @param {string} 上传文件的id
  449. * @return {array} 上传文件的位置及信息
  450. * 0 上传文件在一个flashfiles的位置
  451. * 1 上传文件在多个flashfiles中其中一个flashfiles的位置
  452. * 2 找到上传文件的信息
  453. */
  454. U.Dk.UP.XWPSCWZC = function (fileid) {
  455. var i, j,
  456. _allfiles = U.Dk.UP.FTF["FL"]; //用户需要上传的所有文件
  457. for (i = 0; i < _allfiles.length; i++) {
  458. j = _allfiles[i].objIndexOf({ "FID": fileid }); //根据FID在_allfiles[i]数组的查找获取FID = fileid的上传文件信息
  459. //找到该上传文件
  460. if (j > -1) {
  461. /*
  462. * 0 上传文件在一个flashfiles的位置
  463. * 1 上传文件在多个flashfiles中其中一个flashfiles的位置
  464. * 2 找到上传文件的信息
  465. */
  466. return [j, i, _allfiles[i][j]];
  467. }
  468. }
  469. return [-1, -1, null]; //返回未找到的信息
  470. }
  471. /**
  472. * 文件判断是否允许上传 包含是否超过最大上传文件的大小和上传文件已经个超过用户网盘使用大小
  473. * @param {object} 上传文件的信息
  474. * @return {boolean||number} 返回上传信息
  475. * true 该文件可以上传
  476. * 1 上传文件大于单个文件最大数
  477. * 2 网盘已满
  478. */
  479. U.Dk.UP.ISFLUP = function (uploadfile) {
  480. var _diskinfo = uploadfile.UGE;
  481. //判断文件的大小是否超过2G
  482. if (uploadfile["size"] > U.UP.GetSfileS("2G")) {
  483. U.Alert("最大上传文件不可以超过2G");
  484. return 1;
  485. }
  486. //判断上传文件后网盘会不会超出总大小
  487. else if ((U.UP.GetSfileS(US.userInfo.FileSize + "B") + uploadfile.size) >= U.UP.GetSfileS(US.userInfo.UserDiskSpace + "M")) {
  488. U.Alert("你的网盘已满,请用积分兑换网盘空间");
  489. return 2;
  490. }
  491. return true;
  492. }
  493. //#endregion