- /**
- * 機能: FTP 操作 (ファイルのコピー、移動、削除/ディレクトリの作成)
- * 時刻: 2006/5/9
- * 著者: Xinran Suifeng
- * QQ: 276624915
- */
- class class_ftp
- {
- public $off; // 操作ステータス (成功/失敗) を返す
- public $conn_id; // FTP 接続
- /**
- * メソッド: FTP 接続
- * @FTP_HOST -- FTP ホスト
- * @FTP_PORT -- ポート
- * @FTP_USER -- ユーザー名
- * @FTP_PASS -- パスワード
- * /
- function __construct($FTP_HOST,$FTP_PORT,$FTP_USER,$FTP_PASS)
- {
- $this->conn_id = @ftp_connect($FTP_HOST,$FTP_PORT) or die("FTP サーバー接続に失敗しました");
- @ftp_login ($this->conn_id,$FTP_USER,$FTP_PASS) または die("FTP サーバーのログインに失敗しました");
- @ftp_pasv($this->conn_id,1) // パッシブ シミュレーションをオンにします
- }
- /* *
- * メソッド: ファイルをアップロードします
- * @path -- ローカルパス
- * @newpath -- アップロードパス
- * @type -- ディレクトリが存在しない場合は新しいディレクトリを作成します
- */
- function up_file($path,$newpath,$type=true)
- {
- if($type) $this->gt;dir_mkdirs($newpath);
- $this->off = @ftp_put ( $this->conn_id,$newpath,$path,FTP_BINARY);
- if(!$this->off) echo "ファイルのアップロードに失敗しました。権限とパスが正しいか確認してください!";
- }
- / **
- * メソッド: ファイルを移動します
- * @path -- 元のパス
- * @newpath -- 新しいパス
- * @type -- ディレクトリが存在しない場合は新しいディレクトリを作成します
- */
- function move_file($path,$newpath,$type=true)
- {
- if($type) $this->dir_mkdirs($newpath);
- $this->off = @ ftp_rename($ this->conn_id,$path,$newpath);
- if(!$this->off) echo "ファイルの移動に失敗しました。アクセス許可と元のパスが正しいかどうか確認してください!";
- }
- / **
- * メソッド: ファイルをコピーします
- * 注: FTP にはコピー コマンドがないため、このメソッドの代替操作は次のとおりです: ダウンロードしてから新しいパスにアップロードします
- * @path -- 元のパス
- * @newpath -- 新しいpath
- * @type -- ターゲットディレクトリが存在しない場合は作成します
- */
- function copy_file($path,$newpath,$type=true)
- {
- $downpath = "c:/tmp.dat";
- $this->off = @ftp_get($this ->conn_id, $downpath,$path,FTP_BINARY);// ダウンロード
- if(!$this->off) echo "ファイルのコピーに失敗しました。権限と元のパスが正しいかどうかを確認してください。 ";
- $this->up_file($downpath,$newpath,$type);
- }
- /**
- * メソッド: ファイルを削除します
- * @path -- パス
- */
- function del_file($path)
- {
- $this->off = @ftp_delete ($this->conn_id,$path);
- if(!$this->off) echo "ファイルの削除に失敗しました。権限とパスが正しいか確認してください。 ";
- }
- /**
- * メソッド: ディレクトリを生成します
- * @path -- パス
- */
- function dir_mkdirs($path)
- {
- $path_arr =explode('/',$path); // ディレクトリ配列を取得
- $file_name = array_pop($path_arr) ; // ファイル名をポップアップします
- $path_div = count($path_arr) // レイヤー数を取得します
- foreach($path_arr as $val) // ディレクトリを作成します
- {
- if(@ftp_chdir($this- >conn_id,$ val) == FALSE)
- {
- $tmp = @ftp_mkdir($this->conn_id,$val);
- if($tmp == FALSE)
- {
- echo "ディレクトリの作成に失敗しました、お願いします権限とパスが正しいことを確認してください。 ";
- exit;
- }
- @ftp_chdir($this->conn_id,$val);
- }
- }
- for($i=1;$i=$path_div;$i++) // root にフォールバックします
- {
- @ftp_cdup($this->conn_id);
- }
- }
- /**
- *方法: FTP接続を閉じる
- */
- function close()
- {
- @ftp_close($this->conn_id);
- }
- }/ / class class_ftp end
- /************************************** テスト************* ************************
- $ftp = new class_ftp('192.168.100.143',21,'user','pwd'); // FTP 接続を開きます
- //$ftp->up_file('aa.txt','a/b/c/cc.txt') // ファイルをアップロードします
- //$ftp->move_file('a/b) /c /cc.txt','a/cc.txt'); // ファイルを移動
- //$ftp->copy_file('a/cc.txt','a/b/dd.txt'); // ファイルをコピー
- //$ftp->del_file('a/b/dd.txt') // ファイルを削除
- $ftp->close(); // FTP 接続を切断します
- ***** ** *********************************************** ***********************/
- ?>
-
コードをコピー
|