信呼OA版本v2.3.8
This commit is contained in:
376
webmain/public/upload/tpl_upload.html
Normal file
376
webmain/public/upload/tpl_upload.html
Normal file
@@ -0,0 +1,376 @@
|
||||
<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>
|
||||
101
webmain/public/upload/uploadAction.php
Normal file
101
webmain/public/upload/uploadAction.php
Normal file
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
class uploadClassAction extends Action{
|
||||
|
||||
/**
|
||||
* 上传文件页面
|
||||
*/
|
||||
public function defaultAction()
|
||||
{
|
||||
$callback = $this->get('callback');
|
||||
$callbacka = explode('|', $callback);
|
||||
|
||||
$params['callback'] = $callbacka[0];
|
||||
$params['changeback'] = arrvalue($callbacka,1);
|
||||
$params['maxup'] = $this->get('maxup','0');
|
||||
$params['thumbnail'] = $this->get('thumbnail');
|
||||
$params['maxwidth'] = $this->get('maxwidth','0');
|
||||
$params['showid'] = $this->get('showid');
|
||||
$params['upkey'] = $this->get('upkey');
|
||||
$params['uptype'] = $this->get('uptype','*');
|
||||
$params['thumbtype'] = $this->get('thumbtype','0');
|
||||
$params['maxsize'] = (int)$this->get('maxsize', c('upfile')->getmaxzhao());
|
||||
|
||||
$urlparams = '{}';
|
||||
$urlcan = $this->get('urlparams');//格式:a=b,c=d
|
||||
if(!isempt($urlcan)){
|
||||
$cans1 = explode(',', $urlcan);
|
||||
$urlparams = array();
|
||||
foreach($cans1 as $cans2){
|
||||
$cans3 = explode(':', $cans2);
|
||||
$urlparams[$cans3[0]]=$cans3[1];
|
||||
}
|
||||
$urlparams = json_encode($urlparams);
|
||||
}
|
||||
$params['urlparams'] = $urlparams;
|
||||
|
||||
$this->title = $this->get('title','文件上传');
|
||||
$this->assign('params', $params);
|
||||
$this->assign('callback', $params['callback']);
|
||||
}
|
||||
|
||||
public function upfileAjax()
|
||||
{
|
||||
if(!$_FILES)exit('sorry!');
|
||||
$upimg = c('upfile');
|
||||
$maxsize= (int)$this->get('maxsize', 5);
|
||||
$uptype = $this->get('uptype', '*');
|
||||
$thumbnail = $this->get('thumbnail');
|
||||
$upimg->initupfile($uptype, ''.UPDIR.'|'.date('Y-m').'', $maxsize);
|
||||
$upses = $upimg->up('file');
|
||||
$arr = c('down')->uploadback($upses, $thumbnail, false);
|
||||
$this->returnjson($arr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取文件
|
||||
*/
|
||||
public function getfileAjax()
|
||||
{
|
||||
$mtype = $this->request('mtype');
|
||||
$mid = (int)$this->request('mid');
|
||||
$rows = m('file')->getfiles($mtype, $mid);
|
||||
echo json_encode($rows);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除文件
|
||||
*/
|
||||
public function delfileAjax()
|
||||
{
|
||||
$id = (int)$this->request('id','0');
|
||||
m('file')->delfile($id);
|
||||
}
|
||||
|
||||
public function showAction()
|
||||
{
|
||||
$id = (int)$this->get('id','0');
|
||||
$this->display = false;
|
||||
m('file')->show($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑器上传文件
|
||||
*/
|
||||
public function upimgAction()
|
||||
{
|
||||
$this->display = false;
|
||||
$upfile = c('upfile');
|
||||
$upfile->initupfile('jpg|png|gif|jpeg',''.UPDIR.'|'.date('Y-m').'', 5);
|
||||
$upses = $upfile->up('imgFile');
|
||||
if(is_array($upses)){
|
||||
$url = $upses['allfilename'];
|
||||
$url = str_replace('../' , '', $url);
|
||||
$arr = array('error' => 0, 'url' => $url);
|
||||
}else{
|
||||
$arr = array('error' => 1, 'message' => $upses);
|
||||
}
|
||||
$this->returnjson($arr);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user