我不知道为什么没有 "ftp_get_contents" 函数。模拟一个需要一些工作,但这是可以做到的。
<?php
函数 ftp_get_contents($ftp_stream, $remote_file, $mode, $resume_pos=null){
$pipes=stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP);
如果($pipes===false) 返回 false;
如果(!stream_set_blocking($pipes[1], 0)){
fclose($pipes[0]); fclose($pipes[1]);
返回 false;
}
$fail=false;
$data='';
如果(is_null($resume_pos)){
$ret=ftp_nb_fget($ftp_stream, $pipes[0], $remote_file, $mode);
} 否则 {
$ret=ftp_nb_fget($ftp_stream, $pipes[0], $remote_file, $mode, $resume_pos);
}
循环($ret==FTP_MOREDATA){
循环(!$fail && !feof($pipes[1])){
$r=fread($pipes[1], 8192);
如果($r==='') 中断循环;
如果($r===false){ $fail=true; 中断循环; }
$data.=$r;
}
$ret=ftp_nb_continue($ftp_stream);
}
循环(!$fail && !feof($pipes[1])){
$r=fread($pipes[1], 8192);
如果($r==='') 中断循环;
如果($r===false){ $fail=true; 中断循环; }
$data.=$r;
}
fclose($pipes[0]); fclose($pipes[1]);
如果($fail || $ret!=FTP_FINISHED) 返回 false;
返回 $data;
}
?>
类似的方法也可以用来写一个ftp_put_contents函数。