accessid = ''
accesskey = ''
host = ''
policyBase64 = ''
signature = ''
callbackbody = ''
filename = ''
key = ''
expire = 0
g_object_name = ''
g_object_name_type = ''
now = timestamp = Date.parse(new Date()) / 1000;
function send_request() {
var xmlhttp = null;
if(window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else if(window.ActiveXObject) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if(xmlhttp != null) {
serverUrl = '../php/get.php'
xmlhttp.open("GET", serverUrl, false);
xmlhttp.send(null);
return xmlhttp.responseText
} else {
mui.alert("Your browser does not support XMLHTTP.");
}
};
function check_object_radio() {
var tt = document.getElementsByName('myradio');
for(var i = 0; i < tt.length; i++) {
if(tt[i].checked) {
g_object_name_type = tt[i].value;
break;
}
}
}
function get_signature() {
//可以判断当前expire是否超过了当前时间,如果超过了当前时间,就重新取一下.3s 做为缓冲
now = timestamp = Date.parse(new Date()) / 1000;
if(expire < now + 3) {
body = send_request()
var obj = eval("(" + body + ")");
host = obj['host']
policyBase64 = obj['policy']
accessid = obj['accessid']
signature = obj['signature']
expire = parseInt(obj['expire'])
callbackbody = obj['callback']
key = obj['dir']
return true;
}
return false;
};
function random_string(len) {
len = len || 32;
var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
var maxPos = chars.length;
var pwd = '';
for(i = 0; i < len; i++) {
pwd += chars.charAt(Math.floor(Math.random() * maxPos));
}
return pwd;
}
function get_suffix(filename) {
pos = filename.lastIndexOf('.')
suffix = ''
if(pos != -1) {
suffix = filename.substring(pos)
}
return suffix;
}
function calculate_object_name(filename) {
if(g_object_name_type == 'local_name') {
g_object_name += "${filename}"
} else if(g_object_name_type == 'random_name') {
suffix = get_suffix(filename)
g_object_name = key + random_string(10) + suffix
}
return ''
}
function get_uploaded_object_name(filename) {
if(g_object_name_type == 'local_name') {
tmp_name = g_object_name
tmp_name = tmp_name.replace("${filename}", filename);
return tmp_name
} else if(g_object_name_type == 'random_name') {
return g_object_name
}
}
function set_upload_param(up, filename, ret) {
if(ret == false) {
ret = get_signature()
}
g_object_name = key;
if(filename != '') {
suffix = get_suffix(filename)
calculate_object_name(filename)
}
new_multipart_params = {
'key': g_object_name,
'policy': policyBase64,
'OSSAccessKeyId': accessid,
'success_action_status': '200', //让服务端返回200,不然,默认会返回204
'callback': callbackbody,
'signature': signature,
};
up.setOption({
'url': host,
'multipart_params': new_multipart_params
});
up.start();
}
var html = '';
for(i = 0; i < 3; i++) {
html += '
你的浏览器不支持flash,Silverlight或者HTML5!
'
}
$('.con').html(html)
var btnArr = [];
$('.selectfiles').each(function(num) {
btnArr.push($(this).attr('id'));
})
$.each(btnArr, function(i, n) {
var self = this.toString();
var that = document.getElementById(this);
var uploader = new plupload.Uploader({
runtimes: 'html5,flash,silverlight,html4',
browse_button: self,
//multi_selection: false,
// container: document.getElementById('container'),
flash_swf_url: '../lib/plupload-2.1.2/js/Moxie.swf',
silverlight_xap_url: '../lib/plupload-2.1.2/js/Moxie.xap',
url: 'http://oss.aliyuncs.com',
filters: {
mime_types: [ //只允许上传图片和zip,rar文件
{
title: "Image files",
extensions: "jpg,gif,png,bmp"
},
{
title: "Zip files",
extensions: "zip,rar"
}
],
max_file_size: '10mb', //最大只能上传10mb的文件
prevent_duplicates: true //不允许选取重复文件
},
init: {
PostInit: function() {
document.getElementsByClassName('ossfile')[i].innerHTML = '';
// document.getElementById('postfiles').onclick = function() {
// set_upload_param(uploader, '', false);
// return false;
// };
uploader.bind('FilesAdded', function() {
set_upload_param(uploader, '', false);
return false;
});
},
FilesAdded: function(up, files) {
plupload.each(files, function(file) {
document.getElementsByClassName('ossfile')[i].innerHTML += '';
});
},
BeforeUpload: function(up, file) {
check_object_radio();
set_upload_param(up, file.name, true);
},
UploadProgress: function(up, file) {
var d = document.getElementById(file.id);
d.getElementsByTagName('b')[0].innerHTML = '' + file.percent + "%";
var prog = d.getElementsByTagName('div')[0];
var progBar = prog.getElementsByTagName('div')[0]
progBar.style.width = 2 * file.percent + 'px';
progBar.setAttribute('aria-valuenow', file.percent);
},
FileUploaded: function(up, file, info) {
if(info.status == 200) {
document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '
';
} else {
document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = info.response;
}
},
Error: function(up, err) {
if(err.code == -600) {
mui.alert("\n选择的文件太大了");
} else if(err.code == -601) {
mui.alert("\n选择的文件后缀不对");
} else if(err.code == -602) {
mui.alert("\n这个文件已经上传过一遍了");
} else {
mui.alert("\nError xml:" + err.response);
}
}
}
});
uploader.init();
});
var uploader = new plupload.Uploader({
runtimes: 'html5,flash,silverlight,html4',
browse_button: 'selectfiles',
//multi_selection: false,
// container: document.getElementById('container'),
flash_swf_url: '../lib/plupload-2.1.2/js/Moxie.swf',
silverlight_xap_url: '../lib/plupload-2.1.2/js/Moxie.xap',
url: 'http://oss.aliyuncs.com',
filters: {
mime_types: [ //只允许上传图片和zip,rar文件
{
title: "Image files",
extensions: "jpg,gif,png,bmp"
},
{
title: "Zip files",
extensions: "zip,rar"
}
],
max_file_size: '10mb', //最大只能上传10mb的文件
prevent_duplicates: true //不允许选取重复文件
},
init: {
PostInit: function() {
document.getElementById('ossfile').innerHTML = '';
// document.getElementById('postfiles').onclick = function() {
// set_upload_param(uploader, '', false);
// return false;
// };
uploader.bind('FilesAdded', function() {
set_upload_param(uploader, '', false);
return false;
});
},
FilesAdded: function(up, files) {
plupload.each(files, function(file) {
document.getElementById('ossfile').innerHTML += '';
});
},
BeforeUpload: function(up, file) {
check_object_radio();
set_upload_param(up, file.name, true);
},
UploadProgress: function(up, file) {
var d = document.getElementById(file.id);
d.getElementsByTagName('b')[0].innerHTML = '' + file.percent + "%";
var prog = d.getElementsByTagName('div')[0];
var progBar = prog.getElementsByTagName('div')[0]
progBar.style.width = 2 * file.percent + 'px';
progBar.setAttribute('aria-valuenow', file.percent);
},
FileUploaded: function(up, file, info) {
if(info.status == 200) {
document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '
';
} else {
document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = info.response;
}
},
Error: function(up, err) {
if(err.code == -600) {
mui.alert("\n选择的文件太大了");
} else if(err.code == -601) {
mui.alert("\n选择的文件后缀不对");
} else if(err.code == -602) {
mui.alert("\n这个文件已经上传过一遍了");
} else {
mui.alert("\nError xml:" + err.response);
}
}
}
});
uploader.init();