getparams('fileid','0'); //文件ID if($fileid<=0)return 'error fileid'; $frs = m('file')->getone($fileid); if(!$frs)return 'filers not found'; $filepath = $frs['filepath']; if(substr($filepath, 0, 4)=='http')return 'filepath is httppath'; $msg = $this->sendpath($filepath, $frs); if($msg)return $msg; return 'success'; } private function sendpath($filepath, $frs) { $path = ROOT_PATH.'/'.$filepath; if(!file_exists($path))return 'filepath not exists'; $lx = 'file'; if(getconfig('xinhudoc_diskops'))$lx='path'; $url = $this->upfileurl($lx); //文件远程上传的 if($lx=='file'){ $data = base64_encode(file_get_contents($path)); $params = array( 'filename' => $frs['filename'], 'optname' => $frs['optname'], 'adddt' => $frs['adddt'], 'fileext' => $frs['fileext'], 'filesize' => $frs['filesize'], 'filepath' => $frs['filepath'], 'table' => ''.DB_BASE.'.file', 'mid' => $frs['id'], 'optid' => $frs['optid'], ); $canstr = $this->jm->base64encode(json_encode($params)); $url .= '&sendtype=file¶msstr='.$canstr.''; $result = c('curl')->postcurl($url, $data); $msg = $this->chuliresult($result, $frs, 1); if(!$msg){ $this->sendother($frs['thumbpath'], 'thumb', $frs,2); $this->sendother($frs['pdfpath'], 'pdf', $frs,3); } return $msg; } //同服务器用复制的 $result = c('curl')->postcurl($url, array( 'rootpath' => ROOT_PATH, 'filepath' => $frs['filepath'], 'fileext' => $frs['fileext'], 'filename' => $frs['filename'], 'filesize' => $frs['filesize'], 'pdfpath' => $frs['pdfpath'], 'thumbpath' => $frs['thumbpath'], 'optname' => $frs['optname'], 'adddt' => $frs['adddt'], 'table' => ''.DB_BASE.'.file', 'mid' => $frs['id'], 'optid' => $frs['optid'], )); return $this->chuliresult($result, $frs, 0); } private function sendother($filepath, $type, $frs, $lx) { if(isempt($filepath))return; $path = ROOT_PATH.'/'.$filepath; if(!file_exists($path))return; $url = $this->upfileurl('file'); $data = base64_encode(file_get_contents($path)); $params = array( 'filepath' => $filepath, 'table' => ''.DB_BASE.'.file', 'mid' => $frs['id'], ); $canstr = $this->jm->base64encode(json_encode($params)); $url .= '&sendtype='.$type.'¶msstr='.$canstr.''; $result = c('curl')->postcurl($url, $data); return $this->chuliresult($result, $frs, $lx); } private function chuliresult($result, $frs, $lx) { $barr = c('xinhudoc')->returnresult($result); if($barr['success']){ $data = $barr['data']; $uarr = array(); if($lx==0 || $lx==1){ $filenum = $data['filenum']; $uarr['filenum'] = $filenum; } //缩略图必须保存对应路径 if($lx==0 || $lx==2){ $thumbpath = arrvalue($data, 'thumbpath'); if(!isempt($thumbpath)){ $uarr['thumbplat'] = '{PLATURL}'.$thumbpath; } } //自动删除文件 if(getconfig('autoup_localdbool')){ if($lx==0 || $lx==1)$this->delfilelocal($frs['filepath']); if($lx==0 || $lx==2)$this->delfilelocal($frs['thumbpath']); if($lx==0 || $lx==3)$this->delfilelocal($frs['pdfpath']); } if($uarr)m('file')->update($uarr, $frs['id']); //更新 }else{ return $barr['msg']; } return ''; } private function delfilelocal($path) { if(isempt($path))return; $path = ROOT_PATH.'/'.$path; if(file_exists($path))@unlink($path); } private function upfileurl($lx) { $url = c('xinhudoc')->geturlstr('upfile', $lx, array( 'updir' => getconfig('xinhudoc_upmkdir') )); return $url; } /** * 从管理平台上删除文件 */ public function delAction() { $filenum = $this->getparams('filenum'); //文件ID if(isempt($filenum))return 'filenum is empty'; $doc = c('xinhudoc'); $url = $doc->geturlstr('upfile', 'del', array( 'filenum' => $filenum )); $result = c('curl')->getcurl($url); $barr = $doc->returnresult($result); if($barr['success']){ return $barr['data']; }else{ return $barr['msg']; } } }