<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[PHP的FTP操作类]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Wed, 14 Mar 2018 03:20:08 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	<div class="code"><br/>&lt;?php<br/>/**<br/> * 作用：FTP操作类( 拷贝、移动、删除文件/创建目录 )<br/> */<br/>class class_ftp<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public $off; // 返回操作状态(成功/失败)<br/>&nbsp;&nbsp;&nbsp;&nbsp;public $conn_id; // FTP连接<br/>&nbsp;&nbsp;&nbsp;&nbsp;const FTP_HOST=&#039;*.*.*.*&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;const FTP_PORT=&#039;21&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;const FTP_USER=&#039;*******&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;const FTP_PASS=&#039;*******&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp;* 方法：FTP连接<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @FTP_HOST -- FTP主机<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @FTP_PORT -- 端口<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @FTP_USER -- 用户名<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @FTP_PASS -- 密码<br/>&nbsp;&nbsp;&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;&nbsp;&nbsp;function __construct()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;conn_id = @ftp_connect(self::FTP_HOST,self::FTP_PORT) or die(&quot;FTP服务器连接失败&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;@ftp_login($this-&gt;conn_id,self::FTP_USER,self::FTP_PASS) or die(&quot;FTP服务器登陆失败&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;@ftp_pasv($this-&gt;conn_id,1); // 打开被动模拟<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp;* 方法：上传文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @path -- 本地路径<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @newpath -- 上传路径<br/>&nbsp;&nbsp;&nbsp;&nbsp;* @type -- 若目标目录不存在则新建<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp; function up_file($path,$newpath,$type=true)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; var_dump($this-&gt;conn_id);exit;<br/>&nbsp;&nbsp;&nbsp;&nbsp; if($type) $this-&gt;dir_mkdirs($newpath);<br/>&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;off = @ftp_put($this-&gt;conn_id,$newpath,$path,FTP_BINARY);<br/>&nbsp;&nbsp;&nbsp;&nbsp; if(!$this-&gt;off) echo &quot;文件上传失败，请检查权限及路径是否正确！&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; /**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 方法：移动文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @path -- 原路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @newpath -- 新路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @type -- 若目标目录不存在则新建<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp; function move_file($path,$newpath,$type=true)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; if($type) $this-&gt;dir_mkdirs($newpath);<br/>&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;off = @ftp_rename($this-&gt;conn_id,$path,$newpath);<br/>&nbsp;&nbsp;&nbsp;&nbsp; if(!$this-&gt;off) echo &quot;文件移动失败，请检查权限及原路径是否正确！&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; /**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 方法：复制文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 说明：由于FTP无复制命令,本方法变通操作为：下载后再上传到新的路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @path -- 原路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @newpath -- 新路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @type -- 若目标目录不存在则新建<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp; function copy_file($path,$newpath,$type=true)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $downpath = &quot;c:/tmp.dat&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;off = @ftp_get($this-&gt;conn_id,$downpath,$path,FTP_BINARY);// 下载<br/>&nbsp;&nbsp;&nbsp;&nbsp; if(!$this-&gt;off) echo &quot;文件复制失败，请检查权限及原路径是否正确！&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;up_file($downpath,$newpath,$type);<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; /**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 方法：删除文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @path -- 路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp; function del_file($path)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;off = @ftp_delete($this-&gt;conn_id,$path);<br/>&nbsp;&nbsp;&nbsp;&nbsp; if(!$this-&gt;off) echo &quot;文件删除失败，请检查权限及路径是否正确！&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; /**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 方法：生成目录<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @path -- 路径<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp; function dir_mkdirs($path)<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $path_arr = explode(&#039;/&#039;,$path); // 取目录数组<br/>&nbsp;&nbsp;&nbsp;&nbsp; $file_name = array_pop($path_arr); // 弹出文件名<br/>&nbsp;&nbsp;&nbsp;&nbsp; $path_div = count($path_arr); // 取层数<br/>&nbsp;&nbsp;&nbsp;&nbsp; foreach($path_arr as $val) // 创建目录<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(@ftp_chdir($this-&gt;conn_id,$val) == FALSE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tmp = @ftp_mkdir($this-&gt;conn_id,$val);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($tmp == FALSE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;目录创建失败，请检查权限及路径是否正确！&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; @ftp_chdir($this-&gt;conn_id,$val);<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; for($i=1;$i=$path_div;$i++) // 回退到根<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; @ftp_cdup($this-&gt;conn_id);<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; /**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 方法：关闭FTP连接<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function close()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @ftp_close($this-&gt;conn_id);<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp; &#125;// class class_ftp end<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; /************************************** 测试 ***********************************<br/>&nbsp;&nbsp;&nbsp;&nbsp; $ftp = new class_ftp(&#039;192.168.100.143&#039;,21,&#039;user&#039;,&#039;pwd&#039;); // 打开FTP连接<br/>&nbsp;&nbsp;&nbsp;&nbsp; //$ftp-&gt;up_file(&#039;aa.txt&#039;,&#039;a/b/c/cc.txt&#039;); // 上传文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; //$ftp-&gt;move_file(&#039;a/b/c/cc.txt&#039;,&#039;a/cc.txt&#039;); // 移动文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; //$ftp-&gt;copy_file(&#039;a/cc.txt&#039;,&#039;a/b/dd.txt&#039;); // 复制文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; //$ftp-&gt;del_file(&#039;a/b/dd.txt&#039;); // 删除文件<br/>&nbsp;&nbsp;&nbsp;&nbsp; $ftp-&gt;close(); // 关闭FTP连接<br/>&nbsp;&nbsp;&nbsp;&nbsp; ******************************************************************************/<br/>?&gt;<br/></div>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] PHP的FTP操作类]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>