Я мог бы сделать что-то подобное. Другой код мог бы получить строго типизированные объекты, а не общий читатель. Кроме того, поскольку datareader доступен для потоковой передачи, вы также можете передавать свои объекты, перенастраивая IEnumerable. Это позволит вам обрабатывать данные, поскольку они все еще читаются (и даже распараллеливать операцию, если это необходимо или необходимо).
Функция GetYourObjectFromDrFunction (), очевидно, сделает необходимый массаж и создаст экземпляр YourObject.
public IEnumerable<YourObject> GetEm()
{
// assume we have your IDataReader named dr
while (dr.Read())
{
yield return GetYourObjectFromDrFunction(dr);
}
}
Попробуйте это.
<?php
$dir = "/images/";
// Open a directory, and read its contents
if (is_dir($dir)){
if ($dh = opendir($dir)){
while (($file = readdir($dh)) !== false){
$ostream = fopen("ssh2.sftp://$sftp" . $file, 'w');
$ofile = file_get_contents($localFile_Official);
fwrite($ostream, $ofile);
fclose($ostream);
}
closedir($dh);
}
}
?>
Вот полный код
// set up basic ssl ftp connection
$conn_id = ssh2_connect($ftp_server, 22);
ssh2_auth_password($conn_id, $ftp_username, $ftp_userpass);
// Open SSL session
$sftp = ssh2_sftp($conn_id);
$Official = "/FTP/LPS Data/ATC/RHIL/20190119_RHIL/XML";
$dir = "Z:\adminshare\Rosehill\190119_Rosehill Gardens\XML\Race_4\\";
// Open a directory, and read its contents
if (is_dir($dir)){
if ($dh = opendir($dir)){
while (($file = readdir($dh)) !== false){
$stream = fopen("ssh2.sftp://$sftp" . $file, 'w');
$file = file_get_contents($remoteFile_Official);
fwrite($stream, $file);
fclose($stream);
}
closedir($dh);
}
}
Надеюсь, что поможет немного больше