ASP.NET使用浏览器下载SFTP文件

时间:2017-12-27 16:47:59

标签: c# asp.net sftp

我试图使用C#和asp.net下载SFTP文件(.csv),但所有示例都需要我有一个远程文件目录。

对于这种情况,我需要浏览器下载文件,而不是我放入目录,因为浏览器(客户端)无法直接将文件放入目录。

有没有人以前做过这个?

我试图使用SSH.NET,但没有找到办法。

1 个答案:

答案 0 :(得分:0)

通过使用SFTP将文件移动到我的服务器然后正常下载文件解决了这个问题。

 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();