日前正在用php做一个ftp的断点续传的东东,我使用ftp_raw()函数来想服务器发送ftp命令,但是命令发送过去后,却没有下载。不知什么原因,望高手指点。我按照以下流程制作的。user xxxx
pass xxxx
cwd workpath
pasv/port
rest 该指令后面必须立即跟随retr或者stor,否则为非法或者无效指令
retr 代码如下 $ftp_ary = array(
'host'=>"192.168.1.9",
'port'=>"21",
'username'=>"aaaa",
'userpass'=>"123456",
'filepath'=>"/"
);
$fp = ftp_connect($ftp_ary['host']);
$res = ftp_raw($fp, "USER ".$ftp_ary['username']);
echo "USER ".$res[0]."\r\n";
$res = ftp_raw($fp, "PASS ".$ftp_ary['userpass']);
echo "PASS ".$res[0]."\r\n";
$res = ftp_raw($fp, "PASV");
echo "PASV ".$res[0]."\r\n"; @ $size = filesize("Bam20090608.dat");
$res = ftp_raw($fp, "REST ".$size);
echo "REST ".$size." ".$res[0]."\r\n";
$res = ftp_raw($fp, "RETR /Bam20090608.dat");
echo "RETR Bam20090608.dat ".$res[0]."\r\n";
pass xxxx
cwd workpath
pasv/port
rest 该指令后面必须立即跟随retr或者stor,否则为非法或者无效指令
retr 代码如下 $ftp_ary = array(
'host'=>"192.168.1.9",
'port'=>"21",
'username'=>"aaaa",
'userpass'=>"123456",
'filepath'=>"/"
);
$fp = ftp_connect($ftp_ary['host']);
$res = ftp_raw($fp, "USER ".$ftp_ary['username']);
echo "USER ".$res[0]."\r\n";
$res = ftp_raw($fp, "PASS ".$ftp_ary['userpass']);
echo "PASS ".$res[0]."\r\n";
$res = ftp_raw($fp, "PASV");
echo "PASV ".$res[0]."\r\n"; @ $size = filesize("Bam20090608.dat");
$res = ftp_raw($fp, "REST ".$size);
echo "REST ".$size." ".$res[0]."\r\n";
$res = ftp_raw($fp, "RETR /Bam20090608.dat");
echo "RETR Bam20090608.dat ".$res[0]."\r\n";
但是通过php代码发送ftp命令就不行了。返回结果如下:
-----------------------------------------
USER 331 User name okay, need password.
PASS 230 User logged in, proceed.
PASV 227 Entering Passive Mode (192,168,1,9,7,172)
REST 10297965 350 Restarting at 10,297,965. Send STORE or RETRIEVE.
RETR Bam20090608.dat 150 Opening BINARY mode data connection for Bam20090608.dat (129581568 Bytes).
-----------------------------------------
以上为运行后的信息。但是文件却没下载下来。不知是何原因。
就是这个$resumepos,自4.3.0开始支持续传了