C# 中 SFTP 服务器上文件的流接口 SSH.NET

Stream interface to a file on SFTP server in C# SSH.NET

我正在使用 SSH.NET 连接到 SFTP 服务器并尝试将图像读入流中以便在我的网页中显示它。

SftpClient client = connectToServer(IP,user,pwd); 
string remotePath = client.WorkingDirectory.ToString() + dto.Directory + "/"; 
FileStream fs = new FileStream(remotePath + dto.FileName,FileMode.Open); 
Stream strm = fs;

以上代码抛出无效字符异常。我不确定这是不是因为服务器上的文件名,即所有这些文件都使用 * 分隔符存储,即 Text1*Text2*Text3.00.png.

如果是,请问还有其他读取流的方法吗?

我也曾尝试从 HttpResponse.OutputStream 中读取,但会引发 read/seek 无效异常。

HttpResponse response = HttpContext.Current.Response;
Stream strm = response.OutputStream;

还有其他方法可以读取此类图像文件吗?


这是使用 FtpWebRequest 实现相同功能的工作代码。

var request = (FtpWebRequest)WebRequest.Create(serverUri);
request.UsePassive = true;
request.UseBinary = true;
request.Credentials =// 
request.Method = WebRequestMethods.Ftp.DownloadFile;
response = (FtpWebResponse)await request.GetResponseAsync();
Stream responseStream = response.GetResponseStream();

我正在使用 SSH.NET 将其更改为 SFTP。

有没有办法用 SSH.NET 获得与 GetResponseStream() 相同的输出?

如果您需要获取 Stream API 到 SFTP 服务器上的文件,请使用 SSH.NET SftpClient.Open[Read]:

Stream fs = client.OpenRead(remotePath);