帝国CMS实现/d/file/附件图片目录与网站分离实现远程附件

大家都知道,帝国cms功能强大,但是远程附件功能只有在商业版本中才有,商业版本的价格对于个人开发者来说难以接受,这里cms大学和大家分享一下帝国cms实现远程附件的方法。

第一步、

打开e\class\connect.php搜索 if($link)

162行左右

在上面添加:eDoPostFileServer();

第二步、

打开e\class\connect.php搜索//--------------- 公共 ---------------

169行左右

在上面添加:

  1. //--------------- 远程发布 ---------------    
  2. //远程附件发布    
  3. function eDoPostFileServer(){
  4. global $efileftp,$efileftp_fr,$efileftp_dr,$public_r;
  5. if(emptyempty($public_r['openfileserver'])||!($efileftp_fr[0]||$efileftp_dr[0]))
  6. {
  7. return '';
  8. }
  9. if(!defined('InEmpireCMSFtp'))
  10. {
  11. include(ECMS_PATH.'e/class/ftp.php');
  12. }
  13. $pr=ReturnPostFtpInfo(1);
  14. $efileftp=new EmpireCMSFTP();
  15. $efileftp->fconnect($pr['ftphost'],$pr['ftpport'],$pr['ftpusername'],$pr['ftppassword'],$pr['ftppath'],$pr['ftpssl'],$pr['ftppasv'],$pr['ftpmode'],$pr['ftpouttime']);
  16. $basepath=$pr['ftppath'].'/';
  17. if($efileftp_fr[0])
  18. {
  19. $path=ReturnPostFtpFilePath(ReturnPostFtpFilename($efileftp_fr[0]));
  20. $efileftp->ftp_mkdirs($basepath,$path);
  21. $count=count($efileftp_fr);
  22. for($i=0;$i<$count;$i++)
  23. {
  24. $lfile=$efileftp_fr[$i];
  25. $hfile=$basepath.ReturnPostFtpFilename($efileftp_fr[$i]);
  26. $efileftp->fTranFile($hfile,$lfile,0,0);
  27. }
  28. }
  29. if($efileftp_dr[0])
  30. {
  31. $dcount=count($efileftp_dr);
  32. for($di=0;$di<$dcount;$di++)
  33. {
  34. $dhfile=$basepath.ReturnPostFtpFilename($efileftp_dr[$di]);
  35. $efileftp->fDelFile($dhfile);
  36. }
  37. }
  38. $efileftp->fExit();
  39. }
  40. //返回发布FTP信息    
  41. function ReturnPostFtpInfo($pid){
  42. global $empire,$dbtbpre;
  43. $r=$empire->fetch1("select * from {$dbtbpre}enewspostserver where pid='$pid'");
  44. return $r;
  45. }
  46. //返回远程实际文件地址    
  47. function ReturnPostFtpFilename($file){
  48. $file=str_replace(ECMS_PATH,'',$file);
  49. $file=str_replace('../','',$file);
  50. $file=str_replace('d/file/','',$file);
  51. return $file;
  52. }
  53. //返回远程实际目录    
  54. function ReturnPostFtpFilePath($file){
  55. $r=explode('/',$file);
  56. $count=count($r)-1;
  57. $path=substr($file,0,strlen($file)-strlen($r[$count])-1);
  58. return $path;
  59. }

第三步、

打开e\admin\SetEnews.php搜索<tbody id="setfileserver" style="display:none">

1117行左右

将:

<tbody id="setfileserver" style="display:none">

</tbody>

  1. <tr>
  2. <td height="25" colspan="2" class="header">远程附件设置</td>
  3. </tr>
  4. <tr>
  5. <td height="25" bgcolor="#FFFFFF">启用远程附件</td>
  6. <td height="25" bgcolor="#FFFFFF"><input type="radio" name="openfileserver" value="1"<?=$r['openfileserver']==1?' checked':''?> onclick="setfileserver.style.display='';">
  7. <input type="radio" name="openfileserver" value="0"<?=$r['openfileserver']==0?' checked':''?> onclick="setfileserver.style.display='none';">
  8. 否 </td>
  9. </tr>
  10. <tbody id="setfileserver" style="display:none">
  11. <tr>
  12. <td height="25" bgcolor="#FFFFFF">启用 SSL 连接</td>
  13. <td height="25" bgcolor="#FFFFFF"><input type="radio" name="fs_ftpssl" value="1"<?=$fsr[ftpssl]==1?' checked':''?>>
  14. <input type="radio" name="fs_ftpssl" value="0"<?=$fsr[ftpssl]==0?' checked':''?>>
  15. 否 </td>
  16. </tr>
  17. <tr>
  18. <td height="25" bgcolor="#FFFFFF">被动模式(pasv)连接</td>
  19. <td height="25" bgcolor="#FFFFFF"><input type="radio" name="fs_ftppasv" value="1"<?=$fsr[ftppasv]==1?' checked':''?>>
  20. <input type="radio" name="fs_ftppasv" value="0"<?=$fsr[ftppasv]==0?' checked':''?>>
  21. 否 </td>
  22. </tr>
  23. <tr>
  24. <td height="25" bgcolor="#FFFFFF">FTP服务器地址</td>
  25. <td height="25" bgcolor="#FFFFFF"><input name="fs_ftphost" type="text" id="fs_ftphost" value="<?=$fsr[ftphost]?>" size="38">
  26. 端口:
  27. <input name="fs_ftpport" type="text" id="fs_ftpport" value="<?=$fsr[ftpport]?>" size="4"></td>
  28. </tr>
  29. <tr>
  30. <td height="25" bgcolor="#FFFFFF">FTP用户名</td>
  31. <td height="25" bgcolor="#FFFFFF"><input name="fs_ftpusername" type="text" id="fs_ftpusername" value="<?=$fsr[ftpusername]?>" size="38">
  32. </td>
  33. </tr>
  34. <tr>
  35. <td height="25" bgcolor="#FFFFFF">FTP密码</td>
  36. <td height="25" bgcolor="#FFFFFF"><input name="fs_ftppassword" type="password" id="fs_ftppassword" size="38">
  37. <font color="#666666">(不修改密码请留空) </font></td>
  38. </tr>
  39. <tr>
  40. <td height="25" bgcolor="#FFFFFF">传送模式</td>
  41. <td height="25" bgcolor="#FFFFFF"><input type="radio" name="fs_ftpmode" value="1"<?=$fsr[ftpmode]==1?' checked':''?>>
  42. ASCII
  43. <input type="radio" name="fs_ftpmode" value="0"<?=$fsr[ftpmode]==0?' checked':''?>>
  44. 二进制</td>
  45. </tr>
  46. <tr>
  47. <td height="25" bgcolor="#FFFFFF">FTP 传输超时时间</td>
  48. <td height="25" bgcolor="#FFFFFF"><input name="fs_ftpouttime" type="text" id="fs_ftpouttime" value="<?=$fsr[ftpouttime]?>" size="38">
  49. 秒<font color="#666666">(0为服务器默认)</font></td>
  50. </tr>
  51. <tr>
  52. <td height="25" bgcolor="#FFFFFF">远程附件目录</td>
  53. <td height="25" bgcolor="#FFFFFF"><input name="fs_ftppath" type="text" id="fs_ftppath" value="<?=$fsr[ftppath]?>" size="38">
  54. <font color="#666666">(目录结尾不要加斜杠“/”,空为根目录)</font></td>
  55. </tr>
  56. <tr>
  57. <td height="25" bgcolor="#FFFFFF">远程访问地址</td>
  58. <td height="25" bgcolor="#FFFFFF"><input name="fs_purl" type="text" id="fs_purl" value="<?=$fsr[purl]?>" size="38">
  59. <font color="#666666">(结尾需加“/”,如:http://file.phome.net/)</font></td>  
  60. </tr>
  61. <tr>
  62. <td height="25" bgcolor="#FFFFFF">测试FTP服务器</td>
  63. <td height="25" bgcolor="#FFFFFF"><input type="submit" name="Submit3" value="测试FTP服务器" onClick="document.form1.enews.value='CheckFileServerFtp';document.form1.action='SetEnews.php';document.form1.target='checkftpiframe';"> <font color="#666666">(无需保存设置即可测试,请在测试通过后再保存)</font>
  64. </td>
  65. </tr>
  66. </tbody>

未经允许不得转载:OZ分享-吉家大宝官方博客 » 帝国CMS实现/d/file/附件图片目录与网站分离实现远程附件

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

置顶文章