C # имеет встроенный класс FTP-запросов, где вы можете создавать папки, загружать файлы, удалять файлы и т. Д.
Если вы хотите загружать папки с веб-страницы, вы не можете использовать эту технологию в браузере, тогда вам придется использовать rich-client, такой как Java, Flash или подобный плагин.
Если вы можете предоставить пользователям клиент для Windows или Mac, вы можете использовать C # (.NET или Mono) для передачи по FTP.
ZIP-файлы не являются проблемой ни для ASP.net, ни для C #, но вы по-прежнему загружаете только 1 файл (zip-архив) и затем его на сервер, чтобы распаковать, используя, например,. C #. Посмотрите на 7-Zip, который является открытым исходным кодом, тогда вы можете получить некоторые идеи.
Вы также можете просто попробовать использовать встроенную библиотеку lib (сжатие):
http://www.eggheadcafe.com/community/csharp/2/10050636/how-to-compress-and-decompress-file-in-c.aspx