2017-02-10 78 views
2

如何使用C#代碼壓縮FTP服務器上存在的文件夾?有沒有其他方法可以快速從FTP下載文件?是否可以使用C#在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

我認爲這是客戶端代碼(在接收文件的一側運行)?您只能在服務器上直接處理文件。因此,除非FTP具有流壓縮功能,否則您可以做的事情不多。 – Thilo

回答

3

這是不可能的。

服務器上的ZIP文件沒有FTP協議中的API。


除FTP訪問外,還有一種方法還具有SSH訪問權限並不少見。如果是這種情況,可以使用SSH連接並在服務器上執行zip shell命令來壓縮文件。然後,您可以使用FTP協議下載ZIP文件(雖然如果您有SSH訪問權限,您也可以訪問SFTP,然後使用SFTP而不是FTP)。


一些(很少)FTP服務器提供到執行任意殼(或其他)使用SITE EXEC命令(或類似的)命令的API。但這真的非常罕見。你可以像上面的SSH一樣使用這個API。

相關問題