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

Php 从FTP服务器上的文件使用fgetcsv,php,zend-framework,csv,Php,Zend Framework,Csv,我需要从FTP读取CSV文件列表,并在成功读取后将其删除 到目前为止,我使用fopen将csv文件打开到一个资源中,然后使用fgetcsv从中读取csv行 $res = fopen($url); while ($csv_row = fgetcsv($res, null, self::DELIMITER)) { ..... } 问题是我需要读取csv文件列表并将其删除。ftp_get函数将文件保存到本地文件中。我宁愿避免那样。我可以继续使用fgetcsv功能和ftp\u nlis

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

到目前为止,我使用
fopen
将csv文件打开到一个资源中,然后使用
fgetcsv
从中读取csv行

  $res = fopen($url);
  while ($csv_row = fgetcsv($res, null, self::DELIMITER)) {
  .....
  }

问题是我需要读取csv文件列表并将其删除。ftp_get函数将文件保存到本地文件中。我宁愿避免那样。我可以继续使用
fgetcsv
功能和
ftp\u nlist
&
ftp\u connect
功能吗

您可以使用将csv文件保存到临时文件流。这样可以避免“创建-读取-删除”循环。一旦关闭文件流,它就好像它神奇地不存在一样:)


如果您想在文件目录上循环,只需获取文件列表,然后将上述代码放入循环。

在尝试使用
fgetcsv
时遇到了哪些问题?fgetcsv无法从ftp资源读取这很酷。我不知道在不指定文件名的情况下创建临时文件是的,这在我第一次发现它的一分钟内改变了我的生活——当你使用ftp连接的文本文件时非常有用。是的,我可以在我们的应用程序中找到一堆系统临时文件夹路径,生成一个随机文件名,将内容保存到其中,当然忘记删除这些临时文件。这可以为我们解决任何问题。再次感谢:-)值得注意的是,您也可以使用“php://memory“代替”php://temp“--区别在于,‘内存’只在内存中存储内容,而‘临时’将在内存中存储内容,直到达到给定大小(默认值为2MB),然后透明地切换到文件系统。阅读php文档的更多信息:ftp\u fget的第一个参数似乎是$ftp\u stream(ftp连接资源)。bool ftp\u fget(资源$ftp\u流,资源$handle,字符串$remote\u文件,int$mode[,int$resumepos=0])
$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);