123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292 |
- std_name=''
- std_id=''
- accessid = ''
- accesskey = ''
- host = ''
- policyBase64 = ''
- signature = ''
- callbackbody = ''
- filename = ''
- upfilename = ''
- key = ''
- expire = 0
- g_object_name = ''
- g_object_name_type = 'local_name' //使用本地名
- max_file_size=0
- aspect_num=''
- now = timestamp = Date.parse(new Date()) / 1000;
- type = getQueryVariable("type");
- var a = send_request( '../../vod/status.htm?aspect_id='+ getQueryVariable("id") + "&type=" + type);
- if (a.errorCode=='1102')
- window.location = '../';
- if (a.errorCode=='1901') {
- document.getElementById('h').innerText=a.errorMsg;
- document.getElementById('selectfiles').style.display="none";
- } else if(a.errorCode=='20000') {
- debugger;
- document.getElementById('h').innerHTML ="上传成功";
- document.getElementById('selectfiles').style.display="none";
- } else {
- debugger;
- max_file_size = a.map.max_file_size;
- std_name = a.map.std_name;
- std_id = a.map.std_id;
- document.getElementById('h').innerHTML ="请上传文件(最大"+max_file_size+"MB) <br>请认真核对。<br><font color='red'>未显示上传成功前请不要离开本页面,切勿切屏、息屏。</font>";
- }
- function send_request(serverUrl)
- {
- var xmlhttp = null;
- if (window.XMLHttpRequest){
- xmlhttp=new XMLHttpRequest();
- } else if (window.ActiveXObject){
- xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
- }
-
- if (xmlhttp!=null){
- // serverUrl是 用户获取 '签名和Policy' 等信息的应用服务器的URL,请将下面的IP和Port配置为您自己的真实信息。
- //serverUrl = 'http://10072.hmsoft.cn/bk/vod/postkey.htm'
- xmlhttp.open( "GET", serverUrl, false );
- xmlhttp.send( null );
- return eval ("(" + 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)
- {
- var obj = send_request( '../../vod/postkey.htm?aspect_id='+ getQueryVariable("id")+'&std_id='+std_id+"&type=" + getQueryVariable("type"));
-
- if(obj['success']!=null){
- console.log(obj['errorMsg']);
- alert(obj['errorMsg']);
- if (a.errorCode=='1102')
- window.location = '../';
- return false;
- }
- host = obj['host']
- policyBase64 = obj['policy']
- accessid = obj['accessid']
- signature = obj['signature']
- expire = parseInt(obj['expire'])
- callbackbody = obj['callback']
- key = obj['dir']
- aspect_num = obj['aspect_num']
- return true;
- }
- return false;
- };
- function random_string(len) {
- varlen = 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 get_name(filename) {
- pos = filename.lastIndexOf('.')
- f = ''
- if (pos != -1) {
- f = filename.substring(0,pos)
- }
- return f;
- }
- 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
- }
- else if (g_object_name_type == 'upfilename')
- {
- suffix = get_suffix(filename)
- g_object_name = key + upfilename + 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(filename)
- //判断
- }
- if (ret){
-
- 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();
- }
- }
- function getQueryVariable(variable)
- {
- var query = window.location.search.substring(1);
- var vars = query.split("&");
- for (var i=0;i<vars.length;i++) {
- var pair = vars[i].split("=");
- if(pair[0] == variable){return pair[1];}
- }
- return(false);
- }
- 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文件
- { title : "mp4 files", extensions : "pdf,ppt,pptx,mp4,mov,flv" }
- ],
- max_file_size :'1000mb', //最大上传
- prevent_duplicates : true //不允许选取重复文件
- },
- init: {
- PostInit: function() {
- document.getElementById('ossfile').innerHTML = '';
- },
- FilesAdded: function(up, files) {
- console.log("FilesAdded"+files.length);
- plupload.each(files, function(file) {
- document.getElementById('ossfile').innerHTML += '<div id="' + file.id + '">' + file.name + ' (' + plupload.formatSize(file.size) + ')<b></b>'
- +'<div class="progress"><div class="progress-bar" style="width: 0%"></div></div>'
- +'</div>';
- });
- set_upload_param(up, '', false);
- },
- BeforeUpload: function(up, file) {
- 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 = '文件已经上传成功';
- document.getElementById('selectfiles').style.display="none";
- }
- else if (info.status == 203)
- {
- document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '上传成功,但是oss访问用户设置的上传回调服务器失败,失败原因是:' + info.response;
- }
- else
- {
- document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = info.response;
- }
- },
- Error: function(up, err) {
- debugger;
- if (err.code == -600) {
- document.getElementById('console').appendChild(document.createTextNode("\n上传的文件太大了,最大允许上传"+max_file_size+"MB"));
- }
- else if (err.code == -601) {
- document.getElementById('console').appendChild(document.createTextNode("\n选择的文件类型不正确"));
- }
- else if (err.code == -602) {
- document.getElementById('console').appendChild(document.createTextNode("\n选择文件重复"));
- }
- else
- {
- document.getElementById('console').appendChild(document.createTextNode("\nError xml:" + err.response));
- }
- }
- }
- });
- uploader.init();
- //console.log( uploader.settings.filters.max_file_size);
|