暂无描述

webuploader-demo.min.js 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. jQuery(function() {
  2. function e(e) {
  3. var a = o('<li id="' + e.id + '"><p class="title">' + e.name + '</p><p class="imgWrap"></p><p class="progress"><span></span></p></li>'),
  4. s = o('<div class="file-panel"><span class="cancel">删除</span><span class="rotateRight">向右旋转</span><span class="rotateLeft">向左旋转</span></div>').appendTo(a),
  5. i = a.find("p.progress span"),
  6. t = a.find("p.imgWrap"),
  7. r = o('<p class="error"></p>'),
  8. d = function(e) {
  9. switch(e) {
  10. case "exceed_size":
  11. text = "文件大小超出";
  12. break;
  13. case "interrupt":
  14. text = "上传暂停";
  15. break;
  16. default:
  17. text = "上传失败,请重试"
  18. }
  19. r.text(text).appendTo(a)
  20. };
  21. "invalid" === e.getStatus() ? d(e.statusText) : (t.text("预览中"), n.makeThumb(e, function(e, a) {
  22. if(e) return void t.text("不能预览");
  23. var s = o('<img src="' + a + '">');
  24. t.empty().append(s)
  25. }, v, b), w[e.id] = [e.size, 0], e.rotation = 0), e.on("statuschange", function(t, n) {
  26. "progress" === n ? i.hide().width(0) : "queued" === n && (a.off("mouseenter mouseleave"), s.remove()), "error" === t || "invalid" === t ? (console.log(e.statusText), d(e.statusText), w[e.id][1] = 1) : "interrupt" === t ? d("interrupt") : "queued" === t ? w[e.id][1] = 0 : "progress" === t ? (r.remove(), i.css("display", "block")) : "complete" === t && a.append('<span class="success"></span>'), a.removeClass("state-" + n).addClass("state-" + t)
  27. }), a.on("mouseenter", function() {
  28. s.stop().animate({
  29. height: 30
  30. })
  31. }), a.on("mouseleave", function() {
  32. s.stop().animate({
  33. height: 0
  34. })
  35. }), s.on("click", "span", function() {
  36. var a, s = o(this).index();
  37. switch(s) {
  38. case 0:
  39. return void n.removeFile(e);
  40. case 1:
  41. e.rotation += 90;
  42. break;
  43. case 2:
  44. e.rotation -= 90
  45. }
  46. x ? (a = "rotate(" + e.rotation + "deg)", t.css({
  47. "-webkit-transform": a,
  48. "-mos-transform": a,
  49. "-o-transform": a,
  50. transform: a
  51. })) : t.css("filter", "progid:DXImageTransform.Microsoft.BasicImage(rotation=" + ~~(e.rotation / 90 % 4 + 4) % 4 + ")")
  52. }), a.appendTo(l)
  53. }
  54. function a(e) {
  55. var a = o("#" + e.id);
  56. delete w[e.id], s(), a.off().find(".file-panel").off().end().remove()
  57. }
  58. function s() {
  59. var e, a = 0,
  60. s = 0,
  61. t = f.children();
  62. o.each(w, function(e, i) {
  63. s += i[0], a += i[0] * i[1]
  64. }), e = s ? a / s : 0, t.eq(0).text(Math.round(100 * e) + "%"), t.eq(1).css("width", Math.round(100 * e) + "%"), i()
  65. }
  66. function i() {
  67. var e, a = "";
  68. "ready" === k ? a = "选中" + m + "张图片,共" + WebUploader.formatSize(h) + "。" : "confirm" === k ? (e = n.getStats(), e.uploadFailNum && (a = "已成功上传" + e.successNum + "张照片至XX相册," + e.uploadFailNum + '张照片上传失败,<a class="retry" href="#">重新上传</a>失败图片或<a class="ignore" href="#">忽略</a>')) : (e = n.getStats(), a = "共" + m + "张(" + WebUploader.formatSize(h) + "),已上传" + e.successNum + "张", e.uploadFailNum && (a += ",失败" + e.uploadFailNum + "张")), p.html(a)
  69. }
  70. function t(e) {
  71. var a;
  72. if(e !== k) {
  73. switch(c.removeClass("state-" + k), c.addClass("state-" + e), k = e) {
  74. case "pedding":
  75. u.removeClass("element-invisible"), l.parent().removeClass("filled"), l.hide(), d.addClass("element-invisible"), n.refresh();
  76. break;
  77. case "ready":
  78. u.addClass("element-invisible"), o("#filePicker2").removeClass("element-invisible"), l.parent().addClass("filled"), l.show(), d.removeClass("element-invisible"), n.refresh();
  79. break;
  80. case "uploading":
  81. o("#filePicker2").addClass("element-invisible"), f.show(), c.text("暂停上传");
  82. break;
  83. case "paused":
  84. f.show(), c.text("继续上传");
  85. break;
  86. case "confirm":
  87. if(f.hide(), c.text("开始上传").addClass("disabled"), a = n.getStats(), a.successNum && !a.uploadFailNum) return void t("finish");
  88. break;
  89. case "finish":
  90. a = n.getStats(), a.successNum ? alert("上传成功") : (k = "done", location.reload())
  91. }
  92. i()
  93. }
  94. }
  95. var n, o = jQuery,
  96. r = o("#uploader"),
  97. l = o('<ul class="filelist"></ul>').appendTo(r.find(".queueList")),
  98. d = r.find(".statusBar"),
  99. p = d.find(".info"),
  100. c = r.find(".uploadBtn"),
  101. u = r.find(".placeholder"),
  102. f = d.find(".progress").hide(),
  103. m = 0,
  104. h = 0,
  105. g = window.devicePixelRatio || 1,
  106. v = 110 * g,
  107. b = 110 * g,
  108. k = "pedding",
  109. w = {},
  110. x = function() {
  111. var e = document.createElement("p").style,
  112. a = "transition" in e || "WebkitTransition" in e || "MozTransition" in e || "msTransition" in e || "OTransition" in e;
  113. return e = null, a
  114. }();
  115. if(!WebUploader.Uploader.support()) throw alert("Web Uploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器"), new Error("WebUploader does not support the browser you are using.");
  116. n = WebUploader.create({
  117. pick: {
  118. id: "#filePicker",
  119. label: "点击选择图片"
  120. },
  121. dnd: "#uploader .queueList",
  122. paste: document.body,
  123. accept: {
  124. title: "Images",
  125. extensions: "gif,jpg,jpeg,bmp,png",
  126. mimeTypes: "image/*"
  127. },
  128. swf: BASE_URL + "/Uploader.swf",
  129. disableGlobalDnd: !0,
  130. chunked: !0,
  131. server: "http://2betop.net/fileupload.php",
  132. fileNumLimit: 300,
  133. fileSizeLimit: 5242880,
  134. fileSingleSizeLimit: 1048576
  135. }), n.addButton({
  136. id: "#filePicker2",
  137. label: "继续添加"
  138. }), n.onUploadProgress = function(e, a) {
  139. var i = o("#" + e.id),
  140. t = i.find(".progress span");
  141. t.css("width", 100 * a + "%"), w[e.id][1] = a, s()
  142. }, n.onFileQueued = function(a) {
  143. m++, h += a.size, 1 === m && (u.addClass("element-invisible"), d.show()), e(a), t("ready"), s()
  144. }, n.onFileDequeued = function(e) {
  145. m--, h -= e.size, m || t("pedding"), a(e), s()
  146. }, n.on("all", function(e) {
  147. switch(e) {
  148. case "uploadFinished":
  149. t("confirm");
  150. break;
  151. case "startUpload":
  152. t("uploading");
  153. break;
  154. case "stopUpload":
  155. t("paused")
  156. }
  157. }), n.onError = function(e) {
  158. alert("Eroor: " + e)
  159. }, c.on("click", function() {
  160. return o(this).hasClass("disabled") ? !1 : void("ready" === k ? n.upload() : "paused" === k ? n.upload() : "uploading" === k && n.stop())
  161. }), p.on("click", ".retry", function() {
  162. n.retry()
  163. }), p.on("click", ".ignore", function() {
  164. alert("todo")
  165. }), c.addClass("state-" + k), s()
  166. });