diff --git a/phpseclib/Net/SFTP.php b/phpseclib/Net/SFTP.php index a94215b8a..dbd231376 100644 --- a/phpseclib/Net/SFTP.php +++ b/phpseclib/Net/SFTP.php @@ -2278,7 +2278,7 @@ function get($remote_file, $local_file = false, $offset = 0, $length = -1, $prog $res_offset = $stat['size']; } else { $res_offset = 0; - if ($local_file !== false) { + if ($local_file !== false && !is_callable($local_file) ) { $fp = fopen($local_file, 'wb'); if (!$fp) { return false; @@ -2288,7 +2288,7 @@ function get($remote_file, $local_file = false, $offset = 0, $length = -1, $prog } } - $fclose_check = $local_file !== false && !is_resource($local_file); + $fclose_check = $local_file !== false && !is_callable($local_file) && !is_resource($local_file); $start = $offset; $read = 0; @@ -2335,6 +2335,8 @@ function get($remote_file, $local_file = false, $offset = 0, $length = -1, $prog $offset+= strlen($temp); if ($local_file === false) { $content.= $temp; + } elseif (is_callable($local_file)) { + $local_file($temp); } else { fputs($fp, $temp); }