Доступ к содержимому удаленного файла в виде потока с помощью сборки WinSCP .NET

Я пытаюсь открыть файл для чтения из SFTP с использованием сборки WinSCP .NET в соответствии с моим упражнением по архивированию файла из SFTP в BLOB-объект Azure.

Чтобы отправить большой двоичный объект в Azure, я использую

using (var fileStream = inputStream)
{
    blockBlob.UploadFromStream(fileStream);
    blobUri = blockBlob.Uri.ToString();
}

Как получить поток из файла на SFTP-сервере?

Мне удалось использовать SftpClient, чтобы получить поток, используя следующий код, и он работает, но, к сожалению, не может достичь того же с помощью сборки WinSCP .NET.

sftpClient.OpenRead(file.FullName)

Может ли кто-нибудь помочь мне добиться того же с помощью сборки WinSCP .NET?

Поскольку мне нужно подключиться к SFTP, используя имя пользователя, пароль и закрытый ключ, я использую сборку WinSCP .NET.

Спасибо


person Mukil Deepthi    schedule 08.10.2015    source источник


Ответы (1)


Сборка WinSCP .NET поддерживает предоставление содержимого удаленного файла с помощью потоков только в текущей бета-версии (5.18), используя _ 1_ метод:

using (Stream stream = session.GetFile("/path/file.ext"))
{
    blockBlob.UploadFromStream(stream);
}

В текущей стабильной версии все, что вы можете сделать, - это загрузить удаленный файл в локальное временное хранилище с помощью Session.GetFileToDirectory (или аналогичный) и прочтите оттуда файл:

// Download the remote file to the temporary location
var transfer = session.GetFileToDirectory("/path/file.ext", Path.GetTempPath());

try
{
    // Open the temporarily downloaded file for reading
    using (Stream stream = File.OpenRead(transfer.Destination))
    {
        // use the stream
        blockBlob.UploadFromStream(stream);
        blobUri = blockBlob.Uri.ToString();
    }
}
finally
{
    // Discard the temporarily downloaded file
    File.Delete(transfer.Destination);
}
person Martin Prikryl    schedule 08.10.2015