2017-02-10 17 views
2

Как закрепить папку, существующую на FTP-сервере, используя код C#? Есть ли альтернативный способ быстрой загрузки файлов с FTP?Возможно ли ZIP-папка на FTP с помощью C#?

Я использовал приведенный ниже код, чтобы заархивировать и загрузить файлы с сервера.

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

Невозможно.

В протоколе FTP отсутствует протокол API для файлов ZIP на сервере.


Нестандартно, что один, помимо доступа к FTP, также имеет доступ к SSH. Если это так, вы можете подключиться к SSH и выполнить команду оболочки zip на сервере для сжатия файлов. Затем вы можете загрузить ZIP-файл с помощью протокола FTP (хотя, если у вас есть доступ к SSH, у вас также будет доступ к SFTP. Затем используйте SFTP вместо FTP.).


Некоторые (очень немногие) FTP-серверы предлагают API для выполнения произвольной оболочки (или другие) команды с помощью SITE EXEC команды (или аналогичный). Но это действительно очень редко. Вы можете использовать этот API так же, как и SSH выше.