如何使用C#提取ftp服务器上存在的zip文件

时间:2013-04-10 10:52:43

标签: c# ftpwebrequest

我使用ftplib使用以下代码

在ftp服务器上上传文件
FtpConnection ftp = new FtpConnection(serverip, ftpuser, ftppassword);
ftp.Open();
ftp.Login();
ftp.SetCurrentDirectory("domain/wwwroot");

    void CreateDirOnFtp(string sDir, FtpConnection ftp)
            {
                try
                {
                    foreach (string f in Directory.GetFiles(sDir))
                    {
                        Uri uri = new Uri(f);
                        ftp.PutFile(f, System.IO.Path.GetFileName(uri.LocalPath));
                    }

                    foreach (string d in Directory.GetDirectories(sDir))
                    {
                        string dirname = new DirectoryInfo(d).Name;

                        if (!ftp.DirectoryExists(dirname))
                        {
                            ftp.CreateDirectory(dirname);
                        }

                        ftp.SetCurrentDirectory(dirname);
                        CreateDirOnFtp(d, ftp);
                    }
                }
                catch (System.Exception e)
                {
                }

            }

但是这段代码并没有遍历所有目录,因此错过了ftp服务器上的一些目录和文件。

所以我决定在ftp上传zip文件并在ftp服务器上解压缩但是 我找不到任何方法来提取ftp服务器上存在的文件。

我该怎么做? 或者在ftp服务器上上传多个目录和文件的任何其他更好的方法

2 个答案:

答案 0 :(得分:0)

你不能告诉服务器使用FTP协议提取文件。要做到这一点,您需要创建一些将在上传后提取它的Web服务,或者一些将提取它找到的所有拉链的计划任务。

如果你要创建一个Web服务,那么可以完全抛弃FTP上传。服务方法可以接受压缩内容并在服务器端提取它。

答案 1 :(得分:0)

尝试recursively浏览您的目录并通过ftp上传。我认为这比没有web服务的服务器上解压缩文件要简单得多。