jQuery(function() {
function e(e) {
var a = o('
' + e.name + '
'),
s = o('删除向右旋转向左旋转
').appendTo(a),
i = a.find("p.progress span"),
t = a.find("p.imgWrap"),
r = o(''),
d = function(e) {
switch (e) {
case "exceed_size":
text = "文件大小超出限制";
break;
case "interrupt":
text = "上传暂停";
break;
default:
text = "上传失败,请重试"
}
r.text(text).appendTo(a)
};
"invalid" === e.getStatus() ? d(e.statusText) : (t.text("预览中"), n.makeThumb(e,
function(e, a) {
if (e) return void t.text("不能预览");
var s = o('
');
t.empty().append(s)
},
v, b), w[e.id] = [e.size, 0], e.rotation = 0),
e.on("statuschange",
function(t, n) {
"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(''),
a.removeClass("state-" + n).addClass("state-" + t)
}),
a.on("mouseenter",
function() {
s.stop().animate({
height: 30
})
}),
a.on("mouseleave",
function() {
s.stop().animate({
height: 0
})
}),
s.on("click", "span",
function() {
var a, s = o(this).index();
switch (s) {
case 0:
return void n.removeFile(e);
case 1:
e.rotation += 90;
break;
case 2:
e.rotation -= 90
}
x ? (a = "rotate(" + e.rotation + "deg)", t.css({
"-webkit-transform": a,
"-mos-transform": a,
"-o-transform": a,
transform: a
})) : t.css("filter", "progid:DXImageTransform.Microsoft.BasicImage(rotation=" + ~~ (e.rotation / 90 % 4 + 4) % 4 + ")")
}),
a.appendTo(l)
}
function a(e) {
var a = o("#" + e.id);
delete w[e.id],
s(),
a.off().find(".file-panel").off().end().remove()
}
function s() {
var e, a = 0,
s = 0,
t = f.children();
o.each(w,
function(e, i) {
s += i[0],
a += i[0] * i[1]
}),
e = s ? a / s: 0,
t.eq(0).text(Math.round(100 * e) + "%"),
t.eq(1).css("width", Math.round(100 * e) + "%"),
i()
}
function i() {
var e, a = "";
"ready" === k ? a = "选中" + m + "张图片,共" + WebUploader.formatSize(h) + "。": "confirm" === k ? (e = n.getStats(), e.uploadFailNum && (a = "已成功上传" + e.successNum + "张照片," + e.uploadFailNum + '张照片上传失败,重新上传失败图片或忽略')) : (e = n.getStats(), a = "共" + m + "张(" + WebUploader.formatSize(h) + "),已上传" + e.successNum + "张", e.uploadFailNum && (a += ",失败" + e.uploadFailNum + "张")),
p.html(a)
}
function t(e) {
var a;
if (e !== k) {
switch (c.removeClass("state-" + k), c.addClass("state-" + e), k = e) {
case "pedding":
u.removeClass("element-invisible"),
l.parent().removeClass("filled"),
l.hide(),
d.addClass("element-invisible"),
n.refresh();
break;
case "ready":
u.addClass("element-invisible"),
o("#filePicker2").removeClass("element-invisible"),
l.parent().addClass("filled"),
l.show(),
d.removeClass("element-invisible"),
n.refresh();
break;
case "uploading":
o("#filePicker2").addClass("element-invisible"),
f.show(),
c.text("暂停上传");
break;
case "paused":
f.show(),
c.text("继续上传");
break;
case "confirm":
//处理上传完成事件
if (f.hide(), c.text("开始上传").addClass("disabled"), a = n.getStats(), a.successNum && !a.uploadFailNum) return void t("finish");
break;
case "finish":
//上传完成后执行
a = n.getStats(),
a.successNum ? alert("上传成功") : (k = "done", location.reload());
o("#filePicker2").removeClass("element-invisible");
c.text("再次上传").removeClass("disabled");
n.refresh();
break;
}
i()
}
}
function fpost(data,url){
//异步提交文件上传成功后获取的JSON字符串解析传到指定的网址,以便进行下一步的处理
jQuery.post(url,data,function(res){
console.log(res);
res = $.parseJSON(res);
$('#callback').val(res.path);
});
}
var n, o = jQuery,
r = o("#uploader"),
l = o('').appendTo(r.find(".queueList")),
d = r.find(".statusBar"),
p = d.find(".info"),
c = r.find(".uploadBtn"),
u = r.find(".placeholder"),
f = d.find(".progress").hide(),
m = 0,
h = 0,
g = window.devicePixelRatio || 1,
v = 110 * g,
b = 110 * g,
k = "pedding",
w = {},
x = function() {
var e = document.createElement("p").style,
a = "transition" in e || "WebkitTransition" in e || "MozTransition" in e || "msTransition" in e || "OTransition" in e;
return e = null,
a
} ();
if (!WebUploader.Uploader.support()) throw alert("Web Uploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器"),
new Error("WebUploader does not support the browser you are using.");
//初始化上传组件
n = WebUploader.create({
pick: {
id: "#filePicker",
innerHTML: UPLOAD_BUTTON_LABEL
},
dnd: "#uploader .queueList",
paste: document.body,
accept: {
title: UPLOAD_ACCEPT_TITLE,
extensions: UPLOAD_ACCEPT_EXTENSIONS,
mimeTypes: UPLOAD_ACCEPT_FILETYPE
},
swf: UPLOAD_BASE_URL + "/Uploader.swf",
disableGlobalDnd: !0,
chunked: true, //开启分片上传
duplicate: true, //去重
server: UPLOAD_SERVER_URL,
fileNumLimit: UPLOAD_MAX_NUM,
fileSizeLimit: UPLOAD_TOTAL_SIZE,
fileSingleSizeLimit: UPLOAD_MAX_SIZE //单张图大小限制
}),
n.addButton({
id: "#filePicker2",
label: "继续添加"
}),
n.onUploadProgress = function(e, a) {
var i = o("#" + e.id),
t = i.find(".progress span");
t.css("width", 100 * a + "%"),
w[e.id][1] = a,
s()
},
n.onFileQueued = function(a) {
m++,
h += a.size,
1 === m && (u.addClass("element-invisible"), d.show()),
e(a),
t("ready"),
s()
},
n.onFileDequeued = function(e) {
m--,
h -= e.size,
m || t("pedding"),
a(e),
s()
},
n.on("all",
function(e) {
switch (e) {
case "uploadFinished":
t("confirm");
break;
case "startUpload":
t("uploading");
break;
case "stopUpload":
t("paused");
break;
}
}),
n.onError = function(e) {
alert("Error: " + e)
},
n.on("uploadSuccess",
function($file,$res){
//$file,当前上传的文件信息
console.log($file);
//$res,服务器返回的信息(服务端返回了文件路径跟链接等信息)
console.log($res);
$res = $res._raw;
console.log($res);
$res = $res + '}';
console.log($res);
$res = $.parseJSON($res); //由JSON字符串转换为JSON对象
console.log($res);
var res = $res.result;
console.log(res);
$('#callback-title').html(res.name);
if(UPLOAD_JSON_POST_URL){
res.size = $file.size;
res.type = $file.type;
res.lasttime = $file.lastModifiedDate;
res.ext = $file.ext;
res.params = $file._info;
fpost(res,UPLOAD_JSON_POST_URL);
}
}
),
c.on("click",
function() {
return o(this).hasClass("disabled") ? !1 : void("ready" === k ? n.upload() : "paused" === k ? n.upload() : "uploading" === k && n.stop())
}),
p.on("click", ".retry",
function() {
n.retry()
}),
p.on("click", ".ignore",
function(e) {
alert("好的");
console.log('取消了已经上传失败的文件');
}),
c.addClass("state-" + k),
s()
});