是否可以使用 PHP 的 FTP module 检测已传输了多少数据? ?
伪代码
... connect to server
ftp_nb_put(file...)
while(true) {
$data = ftp_nb_continue(file...);
if ($data === FTP_MOREDATA) {
continue ... get amount transfered ...
} else {
break ... check if finished etc ...
}
}
最佳答案
您现在可能已经有了答案,但是对于任何正在搜索的人... 这是一个带进度回调的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;
}
关于PHP FTP 转账金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14901018/