2019-09-06 23:53:10 +08:00

306 lines
8.8 KiB
JavaScript
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 {
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 += '<div class="up_out"><div id="ossfile' + i + '" class="ossfile clearfix" data-num="' + i + '">你的浏览器不支持flash,Silverlight或者HTML5</div><div id="container' + i + '" class="container" data-num="' + i + '"><a id="selectfiles' + i + '" href="javascript:void(0);" class="btn selectfiles" data-num="' + i + '">选择文件</a></div></div>'
}
$('.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 += '<div class="files_out" id="' + file.id + '"><b></b>' +
'<div class="progress"><div class="progress-bar" style="width: 60px"></div></div>' +
'</div>';
});
},
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 = '<span>' + file.percent + "%</span>";
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 = '<img data-src="' + get_uploaded_object_name(file.name) + '" src="http://heyuanhui.oss-cn-qingdao.aliyuncs.com/' + get_uploaded_object_name(file.name) + '" />';
} else {
document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = info.response;
}
},
Error: function(up, err) {
if(err.code == -600) {
alert("\n选择的文件太大了");
} else if(err.code == -601) {
alert("\n选择的文件后缀不对");
} else if(err.code == -602) {
alert("\n这个文件已经上传过一遍了");
} else {
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 += '<div class="files_out" id="' + file.id + '"><b></b>' +
'<div class="progress"><div class="progress-bar" style="width: 60px"></div></div>' +
'</div>';
});
},
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 = '<span>' + file.percent + "%</span>";
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 = '<img src="http://heyuanhui.oss-cn-qingdao.aliyuncs.com/' + get_uploaded_object_name(file.name) + '" />';
} else {
document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = info.response;
}
},
Error: function(up, err) {
if(err.code == -600) {
alert("\n选择的文件太大了");
} else if(err.code == -601) {
alert("\n选择的文件后缀不对");
} else if(err.code == -602) {
alert("\n这个文件已经上传过一遍了");
} else {
alert("\nError xml:" + err.response);
}
}
}
});
uploader.init();