get('maxsize', $upimg->getmaxzhao());//上传最大M $uptypes= '*'; $updir = $this->get('updir'); if(isempt($updir)){ $updir=date('Y-m'); }else{ $updir=str_replace(array(' ','.'),'', trim($updir)); $updir=str_replace('{month}',date('Y-m'), $updir); $updir=str_replace('{Year}',date('Y'), $updir); $updir=str_replace(array('{','}'),'', $updir); $updir=str_replace(',','|', $updir); } $upimg->initupfile($uptypes, ''.UPDIR.'|'.$updir.'', $maxsize); $upses = $upimg->up('file'); if(!is_array($upses))exit($upses); $arr = c('down')->uploadback($upses); $arr['autoup'] = (getconfig('qcloudCos_autoup') || getconfig('alioss_autoup')) ? 1 : 0; //是否上传其他平台 $this->returnjson($arr); } /** * 这个是用来在线编辑文档上传的 */ public function upfilevbAction() { $fileid = (int)$this->get('fileid','0'); if($fileid==0)exit('fileid=0'); $data = $this->getpostdata(); if(isempt($data))return '没有数据'; $fileext= $this->get('fileext'); $uptype = '|doc|docx|xls|xlsx|ppt|pptx|'; if(!contain($uptype,'|'.$fileext.'|'))$fileext='doc'; $fileobj = m('file'); $frs = $fileobj->getone($fileid); //记录 if(!$frs)exit('文件记录不存在了'); $frs['oldfilepath'] = $frs['filepath']; $filename = $frs['filename']; if(!contain($filename, '.'.$fileext.'')){ $filename = str_replace(array('.doc','.xls','.ppt'), '.'.$fileext.'', $filename); } $filepath = ''.UPDIR.'/'.date('Y-m').'/'.date('d_His').''.rand(10,99).'.'.$fileext.''; $this->rock->createtxt($filepath, base64_decode($data)); $filesize = filesize($filepath); $filesizecn = $this->rock->formatsize($filesize); //更新文件 $fileobj->update(array( 'filename' => $filename, 'filepath' => $filepath, 'filenum' => '', 'filesize' => $filesize, 'filesizecn' => $filesizecn, 'fileext' => $fileext, 'pdfpath' => '', ),$fileid); c('cache')->del('filetopdf'.$fileid.''); //【弃用】发队列自动上传到信呼文件平台 if(getconfig('autoup_toxinhudoc')){ //c('rockqueue')->sendfile($fileid); } //上传到腾讯存储 if(getconfig('qcloudCos_autoup')){ c('rockqueue')->sendfile($fileid); } //告诉上传人说编辑了他的附件 $mknums = arrvalue($frs,'mknum'); if(!isempt($mknums) && $frs['mid']>0){ $mid = $frs['mid']; $mknumsa = explode('|', $mknums); $modenum = $mknumsa[0]; if(isset($mknumsa[1]))$mid = $mknumsa[1]; $flow = m('flow')->initflow($modenum, $mid, false); $ssid = $flow->addlog(array( 'name' => '在线编辑' )); $ufrs = $frs; $ufrs['filepath'] = $frs['oldfilepath']; unset($ufrs['oldfilepath']); unset($ufrs['id']); $ufrs['mtype'] = 'flow_log'; $ufrs['mid'] = $ssid; $ufrs['mknum'] = ''.$modenum.'|'.$mid.''; $ufrs['filename'] = str_replace('.'.$ufrs['fileext'].'','(备份).'.$ufrs['fileext'].'', $ufrs['filename']); $fileobj->insert($ufrs); //记录原来的文件 //不是我创建就告诉创建人 if($this->adminid<>$frs['optid']) $flow->push($frs['optid'],'', ''.$this->adminname.'在线编辑文件“'.$frs['filename'].'”', '文件在线编辑'); $flow->floweditoffice($frs, $ufrs); }else if($this->adminid<>$frs['optid']){ //不知道关联哪个模块 $flow = m('flow')->initflow('word'); $flow->push($frs['optid'],'文档', ''.$this->adminname.'在线编辑文件“'.$frs['filename'].'”', '文件在线编辑',0, array( 'wxurl' => '' )); } $frs['filesize'] = $filesize; $fkey = $this->createtempurl($frs); return 'ok,'.$fkey.''; } /** * 上传时初始化看是不是存在文件 */ public function initfileAction() { $filesize = c('check')->onlynumber($this->post('filesize')); $fileext = $this->post('fileext'); $filename = $this->getvals('filename'); $where = "`fileext`='$fileext' and `filesize`='$filesize'"; if(!isempt($filename))$where.=" and `filename`='$filename'"; $frs = m('file')->getone($where,'*','`id` desc'); $bo = false; if($frs){ $filepath = $frs['filepath']; if(!isempt($filepath) && file_exists($filepath))$bo=true; } if($bo){ $this->showreturn(json_encode($frs)); }else{ $this->showreturn('','not found', 201); } } public function upfileappAction() { if(!$_FILES)$this->showreturn('', '禁止访问', 201); $upimg = c('upfile'); $maxsize= (int)$this->get('maxsize', $upimg->getmaxzhao());//上传最大M $uptypes= '*'; $upimg->initupfile($uptypes, ''.UPDIR.'|reimchat|'.date('Y-m').'', $maxsize); $upses = $upimg->up('file'); if(!is_array($upses))$this->showreturn('', $upses, 202); $arr = c('down')->uploadback($upses); $this->showreturn($arr); } public function upcontAction() { $cont = $this->post('content'); if(isempt($cont))exit('sorry not cont'); $cont = str_replace(' ','', $cont); $cont = $this->rock->jm->base64decode($cont); $arr = c('down')->createimage($cont,'png','截图'); $this->returnjson($arr); } public function getfileAjax() { $cont = ''; $path = ''.UPDIR.'/uptxt'.$this->adminid.'.txt'; if(file_exists($path)){ @$cont = file_get_contents($path); } $data = array(); if($cont!=''){ $arr = json_decode($cont, true); $msg = $arr['msg']; $data = $arr['data']; @unlink($path); }else{ $msg = 'sorry,not infor!'; } $this->showreturn($data, $msg); } public function getfileAction() { $fileid = (int)$this->post('fileid',0); $rs = m('file')->getone($fileid); $this->showreturn($rs); } public function downAction() { $id = (int)$this->jm->gettoken('id'); m('file')->show($id); } //记录预览记录 public function logsAction() { $fileid = (int)$this->post('fileid',0); $type = (int)$this->post('type',0); m('file')->addlogs($fileid, $type); } /** * 发送编辑权限 */ public function rockofficeeditAction() { $fileid = (int)$this->get('id'); $lx = (int)$this->get('lx'); $frs = m('file')->getone($fileid); if(!$frs)return returnerror('文件不存在了'); $filepath = $frs['filepath']; $filepathout = $frs['filepathout']; if(substr($filepath,0,4)!='http' && !file_exists($filepath)){ if(isempt($filepathout)){ return returnerror('文件不存在了1'); }else{ $filepath = $filepathout; } } $uptype = '|doc|docx|xls|xlsx|ppt|pptx|'; if(!contain($uptype,'|'.$frs['fileext'].'|'))return returnerror('不是文档类型无法在线编辑'); $filename = $frs['filename']; $utes = 'edit'; if($lx==1){ $filename = '(只读)'.$filename.''; $utes = 'yulan'; } $arr = array(); $arr[0] = URL; $arr[1] = $filename; $arr[2] = $this->createtempurl($frs); $arr[3] = $this->rock->gethttppath($filepath); //下载地址 $arr[4] = $fileid; $arr[5] = $this->adminid; $arr[6] = $this->token; $arr[7] = $utes; $arr[8] = $frs['fileext']; $str = ''; foreach($arr as $s1)$str.=','.$s1.''; return returnsuccess(substr($str,1)); } /** * 获取预览和下载地址 */ public function fileinfoAction() { $fileid = (int)$this->get('id'); $type = (int)$this->get('type'); //0预览,1下载,2编辑 $ismobile = (int)$this->get('ismobile'); //是否手机端 return $this->fileinfoShow($fileid, $type, $ismobile); } public function fileinfoShow($fileid, $type, $ismobile) { $fobj = m('file'); $frs = $fobj->getone($fileid); $this->frs = $frs; if(!$frs)return returnerror('文件不存在了'); $filenum= $frs['filenum']; $fileext = $frs['fileext']; $filename = $frs['filename']; $filepath = $frs['filepath']; $filepathout = arrvalue($frs, 'filepathout'); $data = array(); $loadyuan = false; $data['url'] = ''; $data['fileext']= $fileext; //预览 if($type==0){ if(!$fobj->isview($fileext)) return returnerror('此'.$fileext.'类型文件不支持在线预览'); } //从文件上传中心最新 if(!isempt($filenum)){ $dbs = m('admin'); $barr = c('rockfile')->getdata('upload','fileinfo', array( 'fnum' => $filenum, 'lx' => $type, 'sysuid' => $this->adminid, 'ismobile' => $ismobile, 'sysname' => $this->rock->jm->base64encode($this->adminname), 'sysface' => $this->rock->jm->base64encode($dbs->getface($dbs->getmou('face',$this->adminid))), )); if(!$barr['success']){ return $barr; }else{ $loadyuan = true; $da = $barr['data']; $data['url'] = $da['url']; if($da['isimg'] && $type==0)$data['url'] = $da['imgurl']; } } $this->loadyuan = $loadyuan; //存自己服务器的 if(!$loadyuan){ if(substr($filepath,0,4)!='http' && isempt($filepathout) && !file_exists($filepath))return returnerror('文件不存在了1'); if(c('upfile')->isimg($fileext)){ $data['url'] = m('admin')->getface($filepath); } //下载 if($type==1){ $url = 'api.php?m=upload&id='.$fileid.'&a=down'; if($this->rock->web=='wxbro')$url.= '&adminid='.$this->adminid.'&token='.$this->admintoken.''; $data['url'] = $url; } //编辑 if($type==2){ if(getconfig('officebj')=='1'){ $data['fileext']='rockedit'; $data['url'] = 'index.php?m=public&a=fileedit&id='.$fileid.''; }else{ if($ismobile==1)return returnerror('移动端不支持在线编辑'); $data['fileext']='rockoffice'; $data['url'] = $this->rock->gethttppath($filepath); } } } $data['filename'] = $filename; $url = arrvalue($data, 'url'); if($url==''){ $url = 'index.php?m=public&a=fileviewer&id='.$fileid.''; } //用本地插件编辑和预览 if($data['fileext']=='rockoffice'){ $utes = 'edit'; if($type==0){ $filename = '(只读)'.$filename.''; $utes = 'yulan'; } $arr = array(); $arr[0] = URL; $arr[1] = $filename; $arr[2] = $this->createtempurl($frs); $arr[3] = $data['url']; //下载地址 $arr[4] = $fileid; $arr[5] = $this->adminid; $arr[6] = $this->token; $arr[7] = $utes; $arr[8] = $fileext; $str = ''; foreach($arr as $s1)$str.=','.$s1.''; $url = substr($str, 1); } $data['url'] = $url; $data['type'] = $type; $data['id'] = $fileid; $data['isview'] = $fobj->isview($fileext); //是否可直接预览 return returnsuccess($data); } //生成唯一文件名键值 private function createtempurl($frs) { $str = ''.md5(URL).'_'.$frs['filesize'].'_'.$frs['id'].'.'.$frs['fileext'].''; return $str; } /** * app上获取下载地址 */ public function appgetfileAction() { $id = (int)$this->post('id',0); $barr = $this->fileinfoShow($id, 1, 1); if(!$barr['success'])return $barr; $frs = $this->frs; $frs['filetype'] = m('file')->getmime($frs['fileext']); $frs['downurl'] = $barr['data']['url'].'&cfrom=app'; if(!$this->loadyuan){ $frs['downurl']= ''; if(substr($frs['filepath'],0,4)=='http'){ $frs['downurl'] = $frs['filepath']; }else{ if(!file_exists($frs['filepath']) && arrvalue($frs,'filepathout'))$frs['downurl'] = $frs['filepathout']; } } return returnsuccess($frs); } /** * 编辑时验证 */ public function sendeditAction() { $id = (int)$this->get('id',0); $otype = (int)$this->get('otype',0); return c('rockedit')->sendedit($id, $this->admintoken, $otype); } /** * 获取文件信息 */ public function afileinfoAction() { $allfid = c('check')->onlynumber($this->get('allfid')); $filearr= array(); if($allfid){ $fobj = m('file'); $frows = $fobj->getall('`id` in('.$allfid.')','filename,id,filesizecn,fileext,optname,thumbpath,thumbplat'); foreach($frows as $k1=>$rs1){ $rs1['thumbpath'] = $fobj->getthumbpath($rs1); $filearr['f'.$rs1['id'].''] = $rs1; } } return $filearr; } /** * 获取文件(写入到内容里) */ public function filedaoAction() { $allfid = c('check')->onlynumber($this->get('fileid')); $filearr= array(); $str = ''; if($allfid){ $fobj = m('file'); $frows = $fobj->getall('`id` in('.$allfid.')'); $urla = getconfig('outurl', URL); foreach($frows as $k1=>$rs1){ $str.='
'; $url = ''.$urla.''.$rs1['filepath'].''; if($sst = arrvalue($rs1,'filepathout'))$url = $sst; $flx = $rs1['fileext']; if(!contain($fobj->fileall,','.$flx.','))$flx='wz'; $str1 = ''; $imurl = ''.URL.'web/images/fileicons/'.$flx.'.gif'; $thumbpath = $fobj->getthumbpath($rs1); if($fobj->isimg($flx) && !isempt($thumbpath))$imurl = $thumbpath; $str.=' '.$rs1['filename'].'('.$rs1['filesizecn'].')'; } } return $str; } /** * 获取模版文件 */ public function getmfileAction() { $data = array(); $fenlei = $this->jm->base64decode($this->get('fenlei')); $fenlei = $this->rock->xssrepstr($this->rock->iconvsql($fenlei)); $where = m('admin')->getjoinstr('a.`receid`', $this->adminid, 1); $sql = 'select a.`name`,a.`wtype`,b.`filepath`,b.`id` from `[Q]wordxie` a left join `[Q]file` b on a.`fileid`=b.`id` where a.`fenlei`=\''.$fenlei.'\' and a.`isgk`=1 and ('.$where.')'; $rows = $this->db->getall($sql); foreach($rows as $k=>$rs){ $data[] = array( 'value' => $rs['id'], 'name' => $rs['name'], 'subname' => $rs['wtype'], ); } return $data; } public function getmfilvAction() { $fileid = (int)$this->get('fileid','0'); $frs = m('file')->getone($fileid); if(!$frs)return returnerror('不存在'); $lujing = $frs['filepathout']; if(isempt($lujing)){ $lujing = $frs['filepath']; if(substr($lujing,0,4)!='http' && !file_exists($lujing))return returnerror('文件不存在了'); } $fileext = $frs['fileext']; $fname = $this->jm->base64decode($this->get('fname')); $fname = (isempt($fname)) ? $frs['filename'] : ''.$fname.'.'.$fileext.''; $filepath = ''.UPDIR.'/'.date('Y-m').'/'.date('d').'_rocktpl'.rand(1000,9999).'_'.$fileid.'.'.$fileext.''; $this->rock->createtxt($filepath, file_get_contents($lujing)); $uarr = array( 'filename' => $fname, 'fileext' => $fileext, 'filepath' => $filepath, 'filesize' => filesize($filepath), 'filesizecn' => $this->rock->formatsize(filesize($filepath)), 'optid' => $this->adminid, 'optname' => $this->adminname, 'adddt' => $this->rock->now, 'ip' => $this->rock->ip, 'web' => $this->rock->web, ); $uarr['id'] = m('file')->insert($uarr); return returnsuccess($uarr); } /** * 文库选择文件 */ public function changedataAction() { $rows = array(); $uptp = $this->get('uptp'); $tsye = $this->get('tsye'); $key = $this->get('key'); $selv = (int)$this->get('selvalue','0'); $where = '`optid`='.$this->adminid.''; if($selv==1){ $str = m('admin')->getjoinstrs('`shateid`', $this->adminid, 1); $where = '`id` in(select `fileid` from `[Q]word` where `type`=0 '.$str.' )'; } if($key){ $key = $this->rock->xssrepstr($this->jm->base64decode($key)); $where.=" and `filename` like '%".$key."%'"; } if($uptp && $uptp!='*'){ if($uptp=='image')$uptp='jpg,png,gif,jpeg'; $uptp = str_replace(',', "','", $uptp); $where.=" and `fileext` in('".$uptp."')"; } $db = m('file'); $rows = $db->getall($where,'id,filename,filesizecn,fileext,thumbpath,filepath,filepathout','`id` desc limit 10'); foreach($rows as $k=>$rs){ $rows[$k]['value'] = $rs['id']; $rows[$k]['name'] = $rs['filename']; $rows[$k]['subname']= $rs['filesizecn']; $rows[$k]['xuanbool']= true; if($tsye=='img'){ if(!isempt($rs['filepathout']))$rows[$k]['filepath'] = $rs['filepathout']; }else{ unset($rows[$k]['filepath']); } unset($rows[$k]['filepathout']); if(!isempt($rs['thumbpath'])){ $rows[$k]['iconsimg'] = $rs['thumbpath']; }else{ $flx = $rs['fileext']; if(!contain($db->fileall,','.$flx.','))$flx='wz'; $rows[$k]['iconsimg'] = 'web/images/fileicons/'.$flx.'.gif'; } } $count = $db->rows($where); $selectdata[] = array('value'=>'','name'=>'选自己上传'); $selectdata[] = array('value'=>'1','name'=>'共享给我的'); return array( 'rows' => $rows, 'totalCount' => $count, 'selectdata' => $selectdata ); } }