123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376 |
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <script language="javascript" src="js/jquery.js"></script>
- <script language="javascript" src="js/js.js"></script>
- <title><?=$da['title']?></title>
- <script language="javascript">
- var callback= '<?=$params['callback']?>',
- maxup = <?=$params['maxup']?>,
- uptype = '<?=str_replace(',','|',$params['uptype'])?>',
- thumbnail = '<?=$params['thumbnail']?>',
- maxwidth = '<?=$params['maxwidth']?>',
- showid = '<?=$params['showid']?>',
- upkey = '<?=$params['upkey']?>',
- urlparams = <?=$params['urlparams']?>,
- thumbtype = '<?=$params['thumbtype']?>';//缩略图类型0可能去掉看不到的默认, 1整图缩略可以看到白
- var up={
- filearr:[],
- bool:false,
- maxsize:<?=$params['maxsize']?>,
- moi:0,
- wcarr:[],
- init:function()
- {
- if(typeof(FormData)=='undefined'){
- $('body').prepend('<div style="color:red;padding:2px;border:1px #dddddd solid;margin:5px">对不起,您的浏览器不支持上传功能,请使用IE10+,火狐,Opera,谷歌浏览器</div>');
- }else{
- this.reader=true;
- }
- var bol = true;
- try{if(parent.js.uploadrand!=upkey){bol=false;}}catch(e){bol=false;}
- if(!bol){
- try{if(opener.js.uploadrand==upkey){bol=true;}}catch(e){}
- }
- if(!bol){
- $('body').prepend('<div style="color:red;padding:2px;border:1px #dddddd solid;margin:5px">不正当访问本页面,不能操作</div>');
- this.reader = false;
- }
- if(!this.reader){
- get('addbtn').disabled=true;
- get('clearbtn').disabled=true;
- get('startbtn').disabled=true;
- }
- this.obj=$('#upfile');
- var fmsg = '';
- if(maxup!=0)fmsg=',最多可添加'+maxup+'个文件';
- if(uptype!='*')fmsg+=',限制'+uptype+'类型';
- if(fmsg!='')fmsg=fmsg.substr(1);
- $('#footmsg').html(fmsg);
-
- window.addEventListener('drop', function(e) {
- var files = e.dataTransfer;
- up.change(files);
- }, false);
- },
- add:function()
- {
- if(!this.reader||this.bool)return false;
- if(maxup!=0){
- if(this.gsize()>=maxup){
- js.msg('msg','最多可添加'+maxup+'个文件');
- return false;
- }
- }
- document.myform.inputfile.click();
- return false;
- },
- rand:function()
- {
- var rand = ''+js.now('d_His')+''+parseInt(Math.random()*9999)+'';
- return rand;
- },
- change:function(o){
- this.objfile = o.files;
- this.change1(0);
- },
- change1:function(oi)
- {
- var obja = this.objfile;
- if(maxup!=0){
- if(this.gsize()>=maxup){
- this.rexushow();
- return false;
- }
- }
- if(oi>=obja.length){
- setTimeout('document.myform.reset()',500);
- this.rexushow();
- return false;
- }
- var file = obja[oi];
-
- if(!file || file.name=='/'){
- up.change1(oi+1);
- return false;
- }
-
- var olen = this.filearr.length;
- var filesize = file.size;
- var filesizecn = js.formatsize(filesize);
- var filename = file.name;
- var fileext = filename.substr(filename.lastIndexOf('.')+1).toLowerCase();
- var filetype = file.type;
- if(uptype!='*' && uptype!=''){
- var uobo = true;
- if(uptype=='image'){
- if(filetype.indexOf('image')<0)uobo=false;
- }else{
- var auptsype = '|'+uptype+'|';
- if(auptsype.indexOf('|'+fileext+'|')<0)uobo=false;
- }
- if(!uobo){
- var tstype = uptype;
- if(tstype=='image')tstype='jpg,png,gif,bmp,jpeg';
- js.msg('msg','['+filename+']文件类型不符合,请选择类型为['+tstype+']的文件');
- up.change1(oi+1);
- return false;
- }
- }
- if(filesize>this.maxsize*1024*1024){
- js.msg('msg','['+filename+']文件超过'+this.maxsize+' MB,当前文件大小'+filesizecn+'');
- up.change1(oi+1);
- return false;
- }
-
- //回调的验证
- <?php if($params['changeback']!=''){?>
- try{
- var tisr = parent.<?=$params['changeback']?>(file);
- if(tisr && typeof(tisr)=='string'){
- js.msg('msg',tisr);
- up.change1(oi+1);
- return false;
- }
- }catch(e){}
- <?php }?>
-
- this.moi++;
- for(var i=0;i<olen;i++){
- if(this.filearr[i].filename==filename && this.filearr[i].filesize==filesize){
- js.msg('msg','['+filename+']已添加,请不要选择重复文件!');
- up.change1(oi+1);
- return false;
- }
- }
-
- var arr={filename:filename,filesize:filesize,filesizecn:filesizecn,filetype:filetype,fileext:fileext,xu:this.moi,fileobj:file};
- var noi = this.filearr.push(arr);
- var fis= 'web/images/fileicons/'+js.filelxext(fileext)+'.gif';
- var s='<div class="mdiv" upload="true">'+
- '<div class="div01"><span>1. </span><img src="'+fis+'" width="16" height="16" align="absmiddle"> <font>'+filename+'</font>,<a onclick="up.editname('+(noi-1)+', this)" href="javascript:;">改名</a></div>'+
- '<div class="div02">'+filesizecn+'</div>'+
- '<div class="div03" id="updeng'+this.moi+'">初始化文件...</div>'+
- '</div>';
- if(get('upfilemsg'))$('#upfilemsg').remove();
- this.obj.append(s);
- $('#updeng'+up.moi+'').html('等待上传...<a href="javascript:" temp="del" onclick="return up.del(this,'+olen+')">×</a>');
- setTimeout('up.change1('+(oi+1)+');',5);
- },
- editname:function(oi,o1){
- var arr = this.filearr[oi];
- if(!arr){
- $(o1).remove();
- return;
- }
- var nae = arr.filename.replace('.'+arr.fileext+'','');
- js.prompt('改名','输入新的文件名称',function(jg,txt){
- if(jg=='yes' && txt){
- var nname = txt+'.'+arr.fileext+'';
- up.filearr[oi].filename = nname;
- $(o1).parent().find('font').html(nname);
- }
- }, nae);
- },
- del:function(o,oi)
- {
- $(o).parent().parent().remove();
- this.filearr[oi]=false;
- this.rexushow();
- return false;
- },
- gsize:function()
- {
- var olen = this.filearr.length;
- var ol = 0;
- for(var i=0;i<olen;i++){
- if(this.filearr[i])ol++;
- }
- return ol;
- },
- upload:function()
- {
- if(this.bool)return false;
- var olen = this.filearr.length;
- this.uparr = [];
- var ol = 0;
- for(var i=0;i<olen;i++){
- if(this.filearr[i]){
- this.uparr.push(this.filearr[i]);
- ol++;
- }
- }
- if(ol==0){
- js.msg('msg','请添加上传文件');
- return false;
- }
- this.filearr=[];
- get('addbtn').disabled=true;
- get('quebtn').disabled=true;
- get('clearbtn').disabled=true;
- get('startbtn').disabled=true;
- this.bool = true;
- $("a[temp='del']").remove();
- $('#prou').show();
- $('#proushow').html('等待上传('+ol+'/<font id="nowupspan">0</font>)[<font id="allbili">0%</font>]...');
- $('#proudiv').css('width','0%');
- this.start(0);
- return false;
- },
- start:function(oi)
- {
- if(oi==this.uparr.length){
- $('#proushow').html('<font color=white>上传完成</font>');
- get('addbtn').disabled=false;
- get('clearbtn').disabled=false;
- get('startbtn').disabled=false;
- get('quebtn').disabled=false;
- this.bool = false;
- return false;
- }
- this.suarr = this.uparr[oi];
- this.suarr.xuoi = oi;
- this.updengid= 'updeng'+this.suarr.xu+'';
- $('#'+this.updengid+'').html('<font color=#ff6600>正在上传(<span id="bilishow">0</span>%)...</font>');
- $('#nowupspan').html(oi+1);
- this.jdt(0);
- var xhr = new XMLHttpRequest();
- urlparams.maxsize=up.maxsize;
- if(uptype && uptype!='*')urlparams.uptype=uptype;
- if(thumbnail)urlparams.thumbnail=thumbnail;
- var url = js.getajaxurl('upfile','upload','public', urlparams);
- xhr.open('POST', url, true);
- xhr.onreadystatechange = function(){
- };
- xhr.upload.addEventListener("progress", function(evt){
- var loaded = evt.loaded;
- var tot = evt.total;
- var per = Math.floor(100*loaded/tot);
- up.jdt(per);
- $('#bilishow').html(per);
- }, false);
- xhr.addEventListener("load", function(){
- up.upsuccess(this.response, this.status);
- }, false);
- xhr.addEventListener("error", function(){
- $('#'+up.updengid+'').html('<font color=red>上传失败0</font>');
- }, false);
- var fd = new FormData();
- fd.append('file', this.suarr.fileobj, this.suarr.filename);
- xhr.send(fd);
- },
- upsuccess:function(bstr, code){
- var arr = this.suarr;
- var o1s = $('#'+up.updengid+'');
- if(code!=200){
- o1s.html('<font color=red>失败:'+code+'</font>');
- js.msg('msg', bstr, 0);
- }else{
- o1s.html('<font color=green>上传成功</font>');
- var result = js.decode(bstr);
- if(result.id){
- up.wcarr.push({id:result.id,filename:arr.filename,filetype:arr.filetype,fileext:arr.fileext,filesize:arr.filesize,filesizecn:arr.filesizecn,filepath:result.filepath,thumbpath:result.thumbpath,width:result.width,height:result.height});
- }else{
- o1s.html('<font color=red>上传失败1,保存失败</font>');
- js.msg('msg',result.msg, 0);
- }
- }
- setTimeout('up.start('+(arr.xuoi+1)+')',5);
- },
- jdt:function(bl){
- $('#allbili').html(bl+'%');
- $('#proudiv').css('width',''+bl+'%');
- },
- unload:function(){
- return false;
- },
- clear:function()
- {
- $('#prou').hide();
- this.wcarr =[];
- this.filearr=[];
- this.obj.html('');
- },
- rexushow:function(){
- var o = $('#upfile').find('span');
- for(var i=0;i<o.length;i++){
- o[i].innerHTML=''+(i+1)+'. ';
- }
- },
- getsid:function(a){
- var sid = '',i;
- for(i=0;i<a.length;i++){
- sid+=','+a[i].id+'';
- }
- if(sid!='')sid = sid.substr(1);
- return sid;
- },
- okla:function(){
- var sid = this.getsid(this.wcarr);
- <?php if($callback!=''){?>try{parent.<?=$callback?>(this.wcarr,js.request('params1'), js.request('params2'), sid)}catch(e){}<?php }?>
- if(showid!=''){
- try{parent.js.downupshow(this.wcarr, showid);}catch(e){}
- try{opener.js.downupshow(this.wcarr, showid);}catch(e){}
- }
- this.closeaa();
- },
- closeaa:function(){
- window.close();
- try{parent.js.tanclose('uploadwin')}catch(e){}
- }
- }
- window.onbeforeunload=function(){
- if(up.bool)return '文件正在上传,确定要关闭页面吗?';
- }
- document.ondragover=function(e){e.preventDefault();};
- document.ondrop=function(e){e.preventDefault();};
- </script>
- <style type="text/css">
- <?php
- $maincolor = getconfig('apptheme','#1389D3');
- ?>
- .alert{ padding:1px 5px; border:1px #996 solid; background-color:#ffffff; color:<?=$maincolor?>}
- *{ font-size:14px;}
- .mdiv{ border-bottom:1px #cccccc solid;display:inline-block;width:100%}
- .mdiv div{ float:left; line-height:22px; overflow:hidden; padding:5px 3px}
- .div01{ width:55%;text-align:left;border-right:1px #cccccc solid;}
- .div02{ width:15%; text-align:center;border-right:1px #cccccc solid;}
- .div03{ width:25%;text-align:left}
- #prou{overflow:hidden; background-color:#ffffff; margin:5px 0px; border:1px #666 solid;padding:0px; text-align:left;font-size:12px; position:relative; height:18px;line-height:18px}
- #prou span{ left:5px; position:absolute; top:2px}
- #proudiv{ position:absolute; left:0px; top:0px; height:18px; overflow:hidden; background-color:<?=$maincolor?>;width:0%}
- button{ cursor:pointer}
- #footmsg{ text-align:left; padding:3px}
- .quebntha{position:fixed;right:10px;bottom:10px;}
- .webbtn{color:#ffffff;opacity:0.8; background-color:<?=$maincolor?>; padding:5px 8px; border:none; cursor:pointer;font-size:14px;outline:none;border-radius:5px}
- .webbtn:disabled{background-color:#aaaaaa; color:#eeeeee}
- .webbtn:hover{box-shadow:0px 0px 5px rgba(0,0,0,0.3);opacity:1}
- </style>
- </head>
- <body style="padding:1px" onLoad="up.init()">
- <center>
- <form name="myform" style="display:none"><input type="file" name="inputfile" id="inputfileid" <?php if($params['maxup']!=1)echo 'multiple';?> onChange="up.change(this)"></form>
- <div align="left" style="padding:3px"></div>
- <table width="100%" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td align="left"><button type="button" class="webbtn" id="addbtn" onClick="up.add()">+添加文件</button> <button type="button" class="webbtn" id="clearbtn" onClick="up.clear()">-清除所有文件</button> <button type="button" class="webbtn" onClick="up.closeaa()">关闭</button></td>
- <td align="right"><button type="button" class="webbtn" id="startbtn" onClick="up.upload()">开始上传</button></td>
- </tr>
- </table>
- <div style="overflow:hidden; height:5px"></div>
- <div id="prou" style="display:none"><div id="proudiv"></div><span id="proushow">等待上传...</span></div>
- <div class="mdiv" style="background-color:#eeeeee">
- <div class="div01">文件名</div>
- <div class="div02">大小</div>
- <div class="div03">状态</div>
- </div>
- <div id="upfile"><div id="upfilemsg" style="padding:10px;font-size:16px;color:#888888">可拖动文件到空白区域</div></div>
- <div id="footmsg"></div>
- <div class="quebntha"><button type="button" disabled style="padding:5px 15px" class="webbtn" id="quebtn" onClick="up.okla()">确定</button></div>
- </center>
- </body>
- </html>
|