PHPコーディング

ソケットをオープンしてファイル操作をする(put)

2010年02月09日
今回はファイルのアップロード(put)です。

get同様ftpサーバーへログインした接続とは別の接続をオープンして行います。

ローカルファイルの内容を読み込みます
$local = @fopen($localfile, "r");
ファイル内容を全て読み込んでおきます
$write = @fread($local, 100000);

@fclose($local);

ファイル転送モードを指定します。
バイナリならば、【I】、アスキーなら【A】です。
@fputs($sock, "TYPE I
");
$result = @fgets($sock, 512);

パッシブモードをオンにします。
@fputs($sock, "PASV
");
$result = @fgets($sock, 512);

データ用の接続をオープンします。
ポートの計算方法は、ソケットをオープンしてファイル操作をする(get)を参照してください。
$ftp = @fsockopen($ftp_server, $data_port);

リモートにファイルを作成します。
@fputs($sock, "STOR ".$remotefile."
");
$result = @fgets($sock, 512);
成功すれば【150 ・・・】と返ってきます。

リモートにファイルを書き込みます。
$result = @fwrite($ftp, $write);

ファイルサイズを照合をする場合、【fwrite】の戻り値とstrlen($write)をチェックすればOKです。

get同様、バックアップ機能を備えれば安心です。