是否可以使用C#在FTP中压缩文件夹?

时间:2017-02-10 07:19:54

标签: c# .net download ftp zip

如何使用C#代码压缩FTP服务器上存在的文件夹?有没有其他方法可以快速从FTP下载文件?

我使用以下代码从服务器压缩和下载文件。

using (ZipFile zip = new ZipFile())
{
    zip.AlternateEncodingUsage = ZipOption.AsNecessary;
    zip.AddDirectoryByName("Preview_" + id);

    foreach (var item in lstpp)
    {
        foreach (var itm in item.ImageList)
        {
            string filePath = itm.pPath;
            zip.AddFile(filePath, "Preview_" + id);
        }
    }
    response.Clear();
    Response.BufferOutput = false;
    string zipName =
        String.Format("Preview_" + id + ".zip", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss"));
    Response.ContentType = "application/zip";
    Response.AddHeader("content-disposition", "attachment; filename=" + zipName);
    zip.Save(Response.OutputStream);
    Response.End();
}

但它无法重复用于FTP下载。

1 个答案:

答案 0 :(得分:3)

这是不可能的。

FTP协议中没有API用于服务器上的ZIP文件。

除了FTP访问之外,还有一个SSH访问权限并不罕见。如果是这种情况,您可以连接SSH并在服务器上执行zip shell命令来压缩文件。然后,您可以使用FTP协议下载ZIP文件(如果您具有SSH访问权限,则还将具有SFTP访问权限。然后,使用SFTP而不是FTP。)

有些(很少)FTP服务器提供API来使用SITE EXEC命令(或类似命令)执行任意shell(或其他)命令。但这真的非常罕见。您可以像上面的SSH一样使用此API。