2011-08-08 49 views
0

我想在C#中保存一个sftp文件。我有found this example on SaveFileDialog但我不能让它在我的应用程序中工作(其实,我得到一个错误,每当我尝试使用SaveFileDialog说它不存在,我能不能解决问题)SFTP帮助。保存在C#文件#

这是正确的方式保存文件?我不是单击按钮,而是从另一个位置获取sftp文件,并将其保存在本地,以便我可以对其执行一些命令。

如果有帮助,我正在使用Microsoft Visual Studio 2010。

编辑:我想我把人们与我发现的例子搞混了。以下是我如何获取文件:

protected void Page_Load(object sender, EventArgs e) 
    { 
    Sftp sftp = new AmexSFTP.src.Sftp(Config.sSFTPUrl, 
            Config.sSFTPAccount, 
            Config.sSFTPPasswd); 
    // Connect to SFTP server 
    sftp.Connect(); 

    List<string> InputFiles = sftp.GetFileList("output"); 

    //Save files in for each loop here... 
    ....} 

    public Sftp(string sftpHost, string user, string password) 
     : base(sftpHost, user, password) 
    { 
     Init(); 
    } 

    private void Init() 
    { 
     m_monitor = new MyProgressMonitor(this); 
    } 

    public List<string> GetFileList(string path) 
    { 
     List<string> list = new List<string>(); 
     foreach (Tamir.SharpSsh.jsch.ChannelSftp.LsEntry entry in SftpChannel.ls(path)) 
     { 
      list.Add(entry.getFilename().ToString()); 
     } 
     return list.ToList(); 
    } 

也许SaveFileDialog不正确?这是我发现我所有的谷歌结果,所以我认为它是。

谢谢!

+0

OpenFile是否实际创建一个文件呢? – mtijn

+0

你想让用户看到一个对话框,或者你可以保存文件,而无需用户输入吗? –

+0

@ James-我想在没有用户输入的情况下保存文件。这些文件保存在我想访问的另一个sftp站点上。我用这个代码来获取文件:'List list = new List (); foreach(在SftpChannel.ls(路径)中的Tamir.SharpSsh.jsch.ChannelSftp.LsEntry条目){list.Add(entry .getFilename()。ToString());} return list.ToList();' –

回答

0

我认为你有点混淆。除非我误认为Page_Load()方法是ASP.NET WebForms项目的一部分。如果是这种情况,那么您就是混合技术:SaveFileDialog是一个WinForms控件,通常用于客户端应用程序,而不是网页的代码隐藏代码。