c# - 是否可以使用 C# 对 FTP 中的文件夹进行 ZIP 压缩?

标签 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下载。

最佳答案

这不可能。

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


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


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

关于c# - 是否可以使用 C# 对 FTP 中的文件夹进行 ZIP 压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42153658/

相关文章:

c# - 如何将保存为 byte[] 的 MD5 哈希值与 Linq + Entity Framework 进行比较?

c# - 由于 3rd 方依赖关系,单个文件 .NET 5 项目的发布错误

c# - 正则表达式匹配 CSV 文件

c# - 将 'switch' 与资源文件中的字符串一起使用

c# - 将单词(字符串)转换为 Int

c# - 通过 Web.config 转换删除 appSettings 部分中的属性

c# - 如何区分完全不同的 Windows 窗体应用程序运行的多个同名进程?

javascript - 只需用户确认即可从远程服务器下载多个文件

java - 如何从 Java 中的给定 URL 下载 PDF?

java - 下载文件时如何在 Spring 中动态设置 res.setContentType ("application/xls")