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同様、バックアップ機能を備えれば安心です。
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同様、バックアップ機能を備えれば安心です。
コメント