你现在可能有了答案,但对于任何搜索... 这是进步的回调ftp上传功能。 $ lcfn =本地文件名 $ rmfn =远程文件名
function ftp_upload($conn, $lcfn, $rmfn, $progress)
{
$ret = false;
$_pc = -1;
$totalBytes = filesize($lcfn);
$fp = fopen($lcfn, 'rb');
$state = @ftp_nb_fput($conn, $rmfn, $fp, FTP_BINARY);
if($state !== FTP_FAILED){
while($state === FTP_MOREDATA){
$doneSofar = ftell($fp);
$percent = (integer)(($doneSofar/$totalBytes) * 100);
if($_pc != $percent){
$progress($percent);
$_pc = $percent;
}
$state = @ftp_nb_continue($conn);
}
if($state === FTP_FINISHED){
if($_pc != 100){
$progress(100);
}
$ret = true;
}else{
//error: not finished
}
}else{
//error: failure
}
fclose($fp);
return $ret;
}
如果你知道哪些文件已经发出,为什么不使用文件大小()来计算的总额是多少? – 2013-02-15 18:31:15
@John:OP正试图找到一种方法来确定我们在每个“块”中发送了多少个字节。事实上,在模块的API中似乎没有任何明显的机制来做到这一点。这是一个很好的问题。 – 2013-02-15 18:31:51