如何使用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下载。
答案 0 :(得分:3)
这是不可能的。
FTP协议中没有API用于服务器上的ZIP文件。
除了FTP访问之外,还有一个SSH访问权限并不罕见。如果是这种情况,您可以连接SSH并在服务器上执行zip
shell命令来压缩文件。然后,您可以使用FTP协议下载ZIP文件(如果您具有SSH访问权限,则还将具有SFTP访问权限。然后,使用SFTP而不是FTP。)
有些(很少)FTP服务器提供API来使用SITE EXEC
命令(或类似命令)执行任意shell(或其他)命令。但这真的非常罕见。您可以像上面的SSH一样使用此API。