ASP.NET使用浏览器下载SFTP文件
问题描述:
我试图使用C#和asp.net下载SFTP文件(.csv),但所有示例都需要我有一个远程文件目录。ASP.NET使用浏览器下载SFTP文件
对于这种情况,我需要浏览器下载文件,而不是放在目录中,因为浏览器(客户端)无法直接将文件放入目录。
有没有人以前做过这个?
我试图使用SSH.NET,但没有找到办法做到这一点。
答
解决了这个,通过SFTP将文件移动到我的服务器,然后normaly下载文件。
string host = @"host";
string username = "user";
string password = "pass";
string remoteDirectory = "/remote";
string localDirectory = Server.MapPath(@"\pdf\");
using (var sftp = new SftpClient(host, username, password))
{
sftp.Connect();
var files = sftp.ListDirectory(remoteDirectory);
foreach (var file in files)
{
string remoteFileName = file.Name;
if (remoteFileName == "APADEAATTT.csv")
{
using (Stream file1 = File.OpenWrite(localDirectory + "APADEAATTT.csv"))
{
sftp.DownloadFile(remoteDirectory + "APADEAATTT.csv", file1);
}
}
}
}
FileInfo fileInfo = new FileInfo(localDirectory+"APADEAATTT.csv");
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileInfo.Name);
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.ContentType = "text/csv";
Response.Flush();
Response.WriteFile(fileInfo.FullName);
Response.End();
“一个SFTP文件”。 SFTP是Secure FTP协议,不是一种文件类型。完全不清楚你在问什么,或者它是如何与ASP.NET相关的。 –
除非浏览器能够使用SFTP(你可能不能依赖的东西),否则浏览器将不会涉及到这一点。你的服务器需要适当的库。它需要下载文件,然后允许用户像从其他文件一样从Web服务器下载文件。 – mason
您可以考虑编写能SFTP服务器流的文件并立即写字节到HTTP响应流中,因此,你的服务器成为代表一个浏览器的适配器(不理解SFTP)的处理程序和SFTP服务器(这不明白http) –