从FTP服务器上的文件中使用fgetcsv

apo*_*rat 3 php csv zend-framework

我需要从FTP读取CSV文件列表,并在成功读取后删除它们.

到目前为止,我使用fopen资源打开了csv文件,然后用它fgetcsv来读取csv行.

  $res = fopen($url);
  while ($csv_row = fgetcsv($res, null, self::DELIMITER)) {
  .....
  }
Run Code Online (Sandbox Code Playgroud)

问题是我需要读取csv文件列表并删除它们.ftp_get函数将文件保存到本地文件中.我宁愿避免这种情况.什么办法可以继续使用fgetcsv与功能ftp_nlistftp_connect功能呢??

rdl*_*rey 9

您可以使用csv文件保存到临时文件流ftp_fget().这允许您避免"创建 - 读取 - 删除"循环.一旦你关闭文件流,它就像魔法从未存在过:)

$ftp_handle = ftp_connect($ftp_server);
$remote_path = "/path/to/file.csv";
$tmp_handle = fopen('php://temp', 'r+');

if (ftp_fget($ftp_handle, $tmp_handle, $remote_path, FTP_ASCII)) {
  rewind($tmp_handle);
  while ($csv_row = fgetcsv($tmp_handle)) {
    // do stuff
  }
}
fclose($tmp_handle);
Run Code Online (Sandbox Code Playgroud)

如果你想循环遍历文件目录,只需获取文件列表,然后将上面的代码放在循环中.