安裝方法:不會(huì)的可以聯(lián)系QQ81388012
0. 建立一個(gè)目錄 e/extend/下,名稱為 jhcftp ,其下建立文件ftp.php,內(nèi)容為:
<?php
//帝國(guó)網(wǎng)站管理系統(tǒng)FTP
define('InEmpireCMSFtp',TRUE);
//上傳一個(gè)文件
function jhcUpile($filePath,$key){
? ? $hfile=basename($key);
? ? $path=dirname($key);
? ? $pr=ReturnFtpInfo($ftpid);
? ? $e=new EmpireCMSFTP();
? ? $e->fconnect($pr[ftphost],$pr[ftpport],$pr[ftpusername],$pr[ftppassword],$pr[ftppath],$pr[ftpssl],$pr[ftppasv],$pr[ftpmode],$pr[ftpouttime]);
? ? $e->ftp_mkdis($pr[ftppath],$path);
? ?? //上傳文件
$err=$e->fTranFile($hfile,$filePath,0,0);
$e->fExit();
return $err; // 成功則返回一
? ?
}
class EmpireCMSFTP{
var $ftpconnectid;
var $ftptranmode;
function wipespecial($str){ ?
return str_replace(rray("\n","\r"),array('',''),$str); ?
}
//鏈接
function fconnect($ftphost,$ftpport,$ftpusername,$ftppassword,$ftppath,$ftpssl=0,$pasv=0,$tranmode=0,$timeout=0,$checkftp=0){
$ftphost=$thi->wipespecial($ftphost);
$func=$ftpssl&&function_exists('ftp_ssl_connect')?'ftp_ssl_connect':'ftp_connect';
$this->ftpconnectid=@$func($ftphost,$ftpport,20);
if(!$this->ftpconnectid)
}
if($timeout&&function_exists('ftp_set_option'))
{
@ftp_set_option($this->ftpconnectid,FTP_TIMEOUT_SEC,$timeout);
}
$login=$this->fLogin($ftpusername,$ftppassword);
if(!$login)
{
if($checkftp==1)
{
$this->fExit();
return 'UserFail';
}
echo"The username/password for ftp is error!";
$this->fExit();
exit();
?? ?}
if($pasv)
{
$this->fPasv(TRUE);
}
$ftppath=empty($ftppath)?'/':$ftppath;
$chdir=$this->fChdr($ftppath);
if(!$chdir)
{
if($checkftp==1)
{
$this->fExit();
return 'PathFail';
}
echo"The path for ftp is error!";
$this->fExit();
exit();
}
$this->ftptranmode=$tranmode?FTP_ASCII:FTP_BINARY;
}
//登錄
function fLogin($username,$password) {
$username=$this->wipespecial($username);
$password=$this->wipespecial($password);
return @ftp_login($this->ftpconnectid,$username,$password);
}
//關(guān)閉ftp
function fExit(){
return @ftp_quit($this->ftpconnectid);
? ? }
//鏈接模式
function fPasv($pasv){
return @ftp_pasv($his->ftpconnectid,$pasv);
}
//改變路徑
function fChdir($path){
$path=$this->wipespecial($path);
return @ftp_chdir($this->ftpconnectid,$path);
}
//建立目錄
function fMkdir($path){
$path=$this->wipespecial($path);
return @ftp_mkdir($this->ftpconnectid,$path);
? ? }
//向服務(wù)器發(fā)送 SITE 命令
function fSiteCmd($cmd){
$cmd=$this->wipespecial($cmd);
return @ftp_site($this->ftpconnectid,$cmd);
}
//設(shè)置目錄權(quán)限
function fChmoddir($mode,$filename){
$mode=intval($mode);
$filename=$this->wipespecial($filename);
if(function_exists('ftp_chmod'))
{
return @ftp_chmod($this->ftpconnectid,$mode,$filename);
}
else
{
return $this->fSiteCmd('CHMOD '.$mode.' '.$filename);
}
}
//刪除目錄
function fRmdir($path){
$path=$this->wipespecial($path);
return @ftp_rmdir($this->ftpconnectid,$path);
}
//上傳文件
function fTranFile($hfile,$lfile,$startpos=0,$del=0){
$hfile=$this->wipespecial($hfile);
$lfile=$this->wipespecial($lfile);
$startpos=intval($startpos);
$tran=ftp_put($this->ftpconnectid,$hfile,$lfile,$this->ftptranmode,$startpos);
if($del)
{
DelFiletext($lfile);
}
return $tran;
? ? }
//上傳單文件(含建目錄)
function fTranPathFile($basepath,$path,$hfile,$lfile,$del=0){
//建目錄
$this->ftp_mkdirs($basepath,$path);
//上傳文件
$this->fTranFile($hfile,$lfile,0,$del);
}
//上傳多文件
function fMoreTranFile($hfile,$lfile,$del=0){
$count=count($hfile);
for($i=0;$i<$count;$i++)
{
$this->fTranFile($hfile[$i],$lfile[$i],0,$del);
}
? ? }
//上傳多文件(含建目錄)
function fMoreTranPathFile($basepath,$path,$hfile,$lfile,$del=0){
//建目錄
$this->ftp_mkdirs($basepath,$path);
//上傳文件
$this->fMoreTranFile($hfile,$lfile,$del);
}
//下載文件
function fGetFile($lfile,$hfile,$resumepos=0){
$hfile=$this->wipespecial($hfile);
$lfile=$this->wipespecial($lfile);
$resumepos=intval($resumepos);
return @ftp_get($this->ftpconnectid,$lfile,$hfile,$this->ftptranmode,$resumepos);
}
//文件大小
function fSize($hfile){
$hfile=$this->wipespecial($hfile);
return @ftp_size($this->ftpconnectid,$hfile);
}
//刪除文件
function fDelFile($hfile){
$hfile=$this->wipespecial($hfile);
return @ftp_delete($this->ftpconnectid,$hfile);
? ? }
//刪除多文件
function fMoreDelFile($hfile){
$count=count($hfile);
for($i=0;$i<$count;$i++)
{
$this->fDelFile($hfile[$i]);
}
? ? }
//重命名文件
function fRename($oldfile,$newfile){
$oldfile=$this->wipespecial($oldfile);
$newfile=$this->wipespecial($newfile);
return @ftp_rename($this->ftpconnectid,$oldfile,$newfile);
//上傳目錄
function ftp_copy($src_dir,$dst_dir){
$src_dir=$this->wipespecial($src_dir);
$dst_dir=$this->wipespecial($dst_dir);
if(!$this->fChdir($dst_dir))
{
$this->fMkdir($dst_dir);
? ? ? ? }
$d=@opendir($src_dir);
while($file=@readdir($d))
{
if($file!= "."&&$file!="..")
{
if(is_dir($src_dir."/".$file))
{
$this->ftp_copy($src_dir."/".$file,$dst_dir."/".$file);
}
else
{
$this->fTranFile($dst_dir."/".$file,$src_dir."/".$file);
}
}
}
@closedir($d);
}
//返回目錄的文件列表
function fNlist($path) {
$path=$this->wipespecial($path);
return @ftp_nlist($this->ftpconnectid,$path);
}
//刪除目錄
function ftp_rmAll($path,$flag=true){
$path=$this->wipespecial($path);
if($flag)
{
$ret=$this->fRmdir($path)||$this->fDelFile($path);
}
else
{
$ret=false;
}
if(!$ret)
{
$files=$this->fNlist($path);
foreach($files as $values)
{
$values=basename($values);
$dirfile=$path.'/'.$values;
if($this->fSize($dirfile)==-1)
{
$this->fDelFile($dirfile);
}
else
{
$this->ftp_rmAll($dirfile,true);
}
}
if($flag)
{
return $this->fRmdir($path);
}
else
{
return true;
}
}
else
{
return $ret;
}
}
//建多目錄
function ftp_mkdirs($basepath,$path){
$basepath=$this->wipespecial($basepath);
$path=$this->wipespecial($path);
if(empty($path))
{
return '';
}
$r=explode('/',$path);
$count=count($r);
for($i=0;$i<$count;$i++)
{
if($i>0)
{
$returnpath.='/'.$r[$i];
}
else
{
$returnpath.=$r[$i];
}
$createpath=$basepath.$returnpath;
$mk=$this->fMkdir($createpath);
/*if(!$this->fChdir($createpath))
{
$mk=$this->fMkdir($createpath);
if(empty($mk))
{
?? // printerror("CreatePathFail","");
}
}*/
}
$this->fChdir($createpath);
}
}
?>
1. 建立擴(kuò)展變量
ftpdomain
存入緩存,用來保存ftp服務(wù)器域名
比如這樣的: https://wap.1cn.cc
設(shè)置 config.php中的參數(shù)為你申請(qǐng)到的。
2. 修改文件 e/admin/SetEnews.php,增加遠(yuǎn)程附件開關(guān)
查找:
? ? ? ? <tbody id="setfileserver" style="display:none">
? ? ? ? </tbody>
在此前增加:
<tr> ?
? ? ? ? <td height="25" colspan="2" class="header">遠(yuǎn)程附件設(shè)置</td> ?
</tr> ?
<tr> ?
? ? ? ? <td height="25" bgcolor="#FFFFFF">啟用遠(yuǎn)程附件</td> ?
? ? ? ? <td height="25" bgcolor="#FFFFFF"><input type="radio" name="openfileserver" value="1"<?=$r['openfileserver']==1?' checked':''?> onclick="setfileserver.style.display='';"> ?
? ? ? ? 是 ?
? ? ? ? <input type="radio" name="openfileserver" value="0"<?=$r['openfileserver']==0?' checked':''?> onclick="setfileserver.style.display='none';"> ?
? ? ? ? 否 </td> ?
?</tr>
3. 修改/e/class/connet.php
3.1查找: //返回附件目錄
看到如下代碼:
?//返回附件目錄
function ReturnFileSavePath($classid,$fpath=''){
global $public_r,$class_r;
$fpath=$fpath||strstr(','.$fpath.',',',0,')?$fpath:$public_r['fpath'];
$efileurl=eReturnFileUrl();
if($fpath==1)//p目錄
{
$r['filepath']='d/file/p/';
$r['fileurl']=$efileurl.'p/';
}
elseif($fpath==2)//file目錄
{
$r['filepath']='d/file/';
$r['fileurl']=$efileurl;
}
在這個(gè)后面添加:
//add by jiuhecai ?for ftp
elseif($fpath==31)// p目錄 ftp
{
$r['filepath']='d/file/p/';
$r['fileurl']=$public_r['add_ftpdomain'].'/'.$r['filepath'];
3.2本地上傳后的處理
查找 //上傳文件
在這個(gè)函數(shù)的尾部有代碼:
//FileServer
if($public_r['openfileserver'])
{
$efileftp_fr[]=$r['yname'];
}
替換為
//FileServer
if($public_r['openfileserver'] && $_POST['save2ftp'])
{
$efileftp_fr[]=$r['yname'];
//add by jiuhecai for ftpyun
if($public_r['fpath']<30)$public_r['fpath']=30+$public_r['fpath'];
$filePath = $r[yname];
include_once(ECMS_PATH.'e/extend/jhcftp/ftp.php');
? ? ? ? //$key = trim(str_replace($public_r['add_ftpdomain'],'',$r['url']),'/');
? ? ? ? $urlr=parse_url($r['url']);
? ? ? ? $key = trim($urlr['path'],'/');
? ? ? ? $r['url']=$public_r['add_ftpdomain'].'/'.$key;
? ? ? ? if($_POST['getsmall'] || $_POST['getmark'])return $r;
$err=jhcUpFile($filePath,$key);
?
if (!$err) {
? ?
? ? ? ? ? ? if($doetran)
? ? ? ?? {
? ? ? ?? $r[tran]=0;
? ? ? ?? return $r;
? ? ? ?? }
? ? ? ?? else
? ? ? ?? {
? ? ? ?? printerror('TranFail','',$ecms);
? ? ? ?? }
? ? ? ? } else {
? ? ? ? ? ? // 上傳成功
? ? ? ? }
? ? ? ? // 不用了才刪除
? ? ? ? @unlink($filePath);
}
?
? ? 3.3 遠(yuǎn)程上傳后的處理 ?查找: //遠(yuǎn)程保存
? ? 在這個(gè)函數(shù)的尾部有代碼:
? ?
? ? //FileServer
if($public_r['openfileserver'])
{
$efileftp_fr[]=$r['yname'];
}
這個(gè)代碼后3.2中的是相同的。替換為:
//FileServer
if($public_r['openfileserver'])
{
$efileftp_fr[]=$r['yname'];
//add by jiuhecai for ftpyun
if($public_r['fpath']<30)$public_r['fpath']=30+$public_r['fpath'];
$filePath = $r[yname];
include_once(ECMS_PATH.'e/extend/jhcftp/ftp.php');
? ? ? ? //$key = trim(str_replace($public_r['add_ftpdomain'],'',$r['url']),'/');
? ? ? ? $urlr=parse_url($r['url']);
? ? ? ? $key = trim($urlr['path'],'/');
? ? ? ? $r['url']=$public_r['add_ftpdomain'].'/'.$key;
? ? ? ? if($_POST['getsmall'] || $_POST['getmark'])return $r;
$err=jhcUpFile($filePath,$key);
?
if (!$err) {
? ?
? ? ? ? ? ? if($doetran)
? ? ? ?? {
? ? ? ?? $r[tran]=0;
? ? ? ?? return $r;
? ? ? ?? }
? ? ? ?? else
? ? ? ?? {
? ? ? ?? printerror('TranFail','',$ecms);
? ? ? ?? }
? ? ? ? } else {
? ? ? ? ? ? // 上傳成功
? ? ? ? }
? ? ? ? // 不用了才刪除
? ? ? ? @unlink($filePath);
}
3.4 地址的正確返回 查找 //返回附件域名地址
看到代碼:
//返回附件域名地址
function eReturnFileUrl($ecms=0){
global $public_r;
if($ecms==1)
{
return $public_r['fileurl'];
}
$fileurl=$public_r['openfileserver']?$public_r['fs_purl']:$public_r['fileurl'];
return $fileurl;
}
修改為:
//返回附件域名地址
function eReturnFileUrl($ecms=0){
global $public_r;
if(1=1)
{
return $public_r['fileurl'];
}
$fileurl=$public_r['openfileserver']?$public_r['fs_purl']:$public_r['fileurl'];
return $fileurl;
}
3.5 刪除附件
查找函數(shù) function DoDelFile:
//刪除附件
function DoDelFile($r){
global $class_r,$public_r,$efileftp_dr;
$path=$r['path']?$r['path'].'/':$r['path'];
$fspath=ReturnFileSavePath($r[classid],$r[fpath]);
$delfile=eReturnEcmsMainPortPath().$fspath['filepath'].$path.$r['filename'];//moreport
DelFiletext($delfile);
//FileServer
if($public_r['openfileserver'])
{
$efileftp_dr[]=$delfile;
}
}
修改為
//刪除附件
function DoDelFile($r){
global $class_r,$public_r,$efileftp_dr;
$path=$r['path']?$r['path'].'/':$r['path'];
$fspath=ReturnFileSavePath($r[classid],$r[fpath]);
$delfile=eReturnEcmsMainPortPath().$fspath['filepath'].$path.$r['filename'];//moreport
?
//FileServer
if($public_r['openfileserver'])
{
$efileftp_dr[]=$delfile;
//add by jiuhecai for ftp
if($r['fpath']==31 or $r['fpath']==32){
?? ? ? ?include_once(ECMS_PATH.'e/extend/jhcftp/ftp.php');
?? ? ? ?
?? ? ? ?jhcDelFile($delfile);
? ?? }
}
}
4. 修改文件/e/class/functions.php
修改三個(gè)函數(shù): 生成縮略圖 圖片加水印
4.1 生成縮略圖
在函數(shù)
//生成縮略圖
function GetMySmallImg
的尾部有代碼:
? //FileServer
if($public_r['openfileserver'])
{
$efileftp_fr[]=$name.$filer['filetype'];
}
修改為:
? //FileServer
if($public_r['openfileserver'] ?&& $_POST['save2ftp'])
{
$efileftp_fr[]=$name.$filer['filetype'];
//add by jiuhecai ?for ftpyun
$fspath=ReturnFileSavePath($classid);
?? ?$key = $fspath['filepath'].$filepath.'/'.$insertfile;
?? ?$filePath = $name.$filer['filetype'];
?? ?include_once(ECMS_PATH.'e/extend/jhcftp/ftp.php');
?? ?$err=jhcUpFile($filePath,$key);
?? ?@unlink($filePath);
?? ?if(!$_POST['getmark']){
?? ? ? ?// 上傳原文件 刪除原文件
?? ? ? ?$filePath=str_replace('small','',$filePath);
?? ? ? ?$key=str_replace('small','',$key);
?? ? ? ?$err=jhcUpFile($filePath,$key);
?? ? ? ?unlink($filePath);
?? ? ? ?
?? ?}else{
?? ? ? ?
?? ?}
?? ?
}
4.2 圖片加水印
查找函數(shù)(其實(shí)和4.1的代碼相鄰),
//圖片加水印
function GetMyMarkImg($groundImage){
global $public_r;
if(empty($groundImage))
{
return "";
? ? }
imageWaterMark($groundImage,$public_r['markpos'],$public_r['markimg'],$public_r['marktext'],$public_r['markfontsize'],$public_r['markfontcolor'],$public_r['markfont'],$public_r['markpct'],$public_r['jpgquality']);
}
修改為:
//圖片加水印
function GetMyMarkImg($groundImage){
global $public_r;
if(empty($groundImage))
{
return "";
? ? }
imageWaterMark($groundImage,$public_r['markpos'],$public_r['markimg'],$public_r['marktext'],$public_r['markfontsize'],$public_r['markfontcolor'],$public_r['markfont'],$public_r['markpct'],$public_r['jpgquality']);
//FileServer ?add by jiuhecai for ftpyun
if($public_r['openfileserver'] ?&& $_POST['save2ftp']){
$efileftp_fr[]=$name.$filer['filetype'];
//add by jiuhecai ?for ftpyun
$key = str_replace(ECMS_PATH,'',$groundImage);
$filePath = $groundImage;
include_once(ECMS_PATH.'e/extend/jhcftp/ftp.php');
$err=jhcUpFile($filePath,$key);
@unlink($filePath);
?? ?
?? ?
}
}
5. 修改文件 e/admin/ecmseditor/file.php
查找:
<input name="getmark" type="checkbox" id="getmark" value="1" checked>
在之前插入:
<?if($public_r['openfileserver']){?> <input name="save2ftp" type="checkbox" id="save2ftp" value="1" checked>ftp存儲(chǔ)<?}?>
6. 修改文件 e/admin/ecmseditor/editorpage/TranImg.php
查找:
<input name="getmark" type="checkbox" id="getmark" value="1" checked>
在之前插入:
<?if($public_r['openfileserver']){?> <input name="save2ftp" type="checkbox" id="save2ftp" value="1" checked>ftp存儲(chǔ)<?}?> ?
在線下載列表
下載地址1