我需要从 FTP 读取 CSV 文件列表,并在成功读取后删除它们。
到目前为止,我使用 fopen
打开 csv 文件到资源中,然后使用 fgetcsv
从中读取 csv 行。
$res = fopen($url);
while ($csv_row = fgetcsv($res, null, self::DELIMITER)) {
.....
}
问题是我需要读取 csv 文件列表并将它们也删除。 ftp_get 函数将文件保存到本地文件中。我宁愿避免这种情况。我可以继续使用 fgetcsv
函数和 ftp_nlist
& ftp_connect
函数吗? ?
最佳答案
您可以使用 ftp_fget()
将 csv 文件保存到临时文件流中.这使您可以避免“创建-读取-删除”循环。一旦你关闭文件流,它就好像它神奇地从未存在过:)
$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);
如果您想遍历文件目录,只需获取文件列表,然后将上面的代码放入循环中。
关于php - 从 FTP 服务器上的文件使用 fgetcsv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8347754/