2015-10-08 8 views
3

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

Чтобы загрузить блоб в Azure, я использую

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

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

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

sftpClient.OpenRead(file.FullName) 

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

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

Благодаря

ответ

2

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

Так все, что вы можете сделать, это загрузить удаленный файл в локальную временную папку, используя Session.GetFiles и прочитать оттуда файл:

// Generate unique file name for the temporary file 
string tempPath = Path.GetTempFileName(); 

// Download the remote file to the temporary location 
session.GetFiles("/path/file.ext", tempPath).Check(); 

try 
{ 
    // Open the temporarily downloaded file for reading 
    using (Stream stream = File.OpenRead(tempPath)) 
    { 
     // use the stream 
     blockBlob.UploadFromStream(fileStream); 
     blobUri = blockBlob.Uri.ToString(); 
    } 
} 
finally 
{ 
    // Discard the temporarily downloaded file 
    File.Delete(tempPath); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^