使用WinSCP从SFTP位置读取文件内容

时间:2016-04-12 14:21:46

标签: c# ftp sftp winscp winscp-net

我需要使用C#中的WinSCP .NET程序集从SFTP位置读取文件。 我可以将文件从SFTP位置下载到本地路径并读取它。 但有没有办法直接读取文件内容而无需下载到本地路径?

以下是用于下载的代码。但我认为没有可用的选项直接在WinSCP中读取文件内容......比如使用响应,流等......

TransferOptions objTransferoptions = new Transferoptions()
objTransferoptions.transfermode = Automatic
Session objsession = new Session()
objsession.Open()
objsession.GetFiles(remotepath, localpath, false,objTransferoptions)

如果可以直接从SFTP位置读取文件内容,有人可以告诉我吗?提前谢谢!

修改

扩展上述问题。任何人都可以告诉我,可以在SFTP远程位置之间复制文件(从远程位置1到同一SFTP服务器中的远程位置2)。

请注意:我需要复制文件,而不是移动。

1 个答案:

答案 0 :(得分:1)

WinSCP .NET assembly不支持将远程文件内容“下载”到内存中。

您所能做的就是download the file到本地临时位置并从那里读取内存。

using (Session session = new Session())
{
    // Connect
    session.Open(sessionOptions);

    // Download to a temporary folder
    string localPath = Path.GetTempFileName();
    session.GetFiles(remotePath, localPath).Check();

    // Read the file contents
    byte[] contents = File.ReadAllBytes(localPath);

    // Delete the temporary file
    File.Delete(localPath);
}