从ftp服务器读取或下载5kb的文件,而不是下载或读取整个文件的PHP或Python

问题描述 投票:1回答:1

我想下载从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:[email protected]/prod/clientfeed.csv";

$iterator = readByBytes($filename);

 foreach ($iterator as $key=>$iteration) {
    ///if file read is 5kb or some 100 lines
     break;
}

有人可以用PHP或Python帮助我或指导我吗预先感谢。

php python ftp
1个回答
0
投票

如果只想读取文件的一部分,则只需删除while循环并只调用fgets一次。

// Read the first 4KB
$buffer = fgets($handle, 4096);
© www.soinside.com 2019 - 2024. All rights reserved.