【发布时间】:2026-02-11 16:25:01
【问题描述】:
我想从 FTP 服务器下载或读取文件的一部分而不是下载整个文件,这只是为了查看 FTP 服务器中存在的数据是否正确。
我们有这么多客户端,FTP 服务器中的每个文件都可能是任意大小,所以我不想下载或阅读完整的文件,我只想下载或阅读文件的一部分,假设我只想要 5kb 的文件,或者如果从文件中获取第 100 行。
我在 PHP 中有一个函数,如下所示,它完成了一半的工作,但对于较大的文件,它会失败。
function readByBytes($path)
{
try
{
$handle = fopen($path, "rb");
if ($handle)
{
while (($buffer = fgets($handle, 4096)) !== false)
{
}
if (!feof($handle))
{
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
}
catch (Exception $e)
{
echo $e;
}
}
$filename = "ftp://username:password@127.0.0.1/prod/clientfeed.csv";
$iterator = readByBytes($filename);
foreach ($iterator as $key => $iteration)
{
/// if file read is 5kb or some 100 lines
break;
}
有人可以用 PHP 或 Python 帮助我或指导我吗
出现以下警告错误
PHP Warning: fopen(ftp://...@127.0.0.1/prod/clientfeed.csv): failed
to open stream: FTP server reports 550 Could not get file size.
in /var/www/html/newLpplugins/ftp_read_line_line.php on line 80
PHP Warning: filesize(): stat failed for
ftp://...@127.0.0.1/prod/clientfeed.csv in
/var/www/html/newLpplugins/ftp_read_line_line.php on line 81
PHP Warning: fread() expects parameter 1 to be resource, bool given
in /var/www/html/newLpplugins/ftp_read_line_line.php on line 81
PHP Warning: fclose() expects parameter 1 to be resource, bool given
in /var/www/html/newLpplugins/ftp_read_line_line.php on line 82
PHP Warning:
file_get_contents(ftp://...@127.0.0.1/prod/clientfeed.csv): failed to
open stream: FTP server reports 550 Could not get file size.
in /var/www/html/newLpplugins/ftp_read_line_line.php on line 84
提前致谢。
【问题讨论】: