Приложение на .NET для работы с FTP
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
Приложение на .NET для работы с FTP
Везет мне видимо на редкие задачи.
Надо написать приложение (ASP.NET) для работы с FTP сервером.
FTP серевр как бы связующее звено между кaстомерами и кaстомер сервисом.
Через FTP будет происходить обмен файлами (upload/download с обоих сторон), так же нужно создавать директории, менять имена файлов, копировать файлы из одной директории в другую.
Пошарила я по .NET документации, информации крайне мало.
Нашла один пример самопального класса для работы с FTP написанного на VB.NET, но я не уверена, что это будет работать и функциональность у него ограниченная.
Может кто-нибудь подсказать где раздобыть побольше информации и примеров?
Видела в Google некоторые распространяют библиотеки для работы с FTP, но не бесплатно. Покупать такую библиотеку фирма не будет. Может у кого есть ссылка на подобные бесплатные библиотеки?
В общем, очень надеюсь на помощь.
Надо написать приложение (ASP.NET) для работы с FTP сервером.
FTP серевр как бы связующее звено между кaстомерами и кaстомер сервисом.
Через FTP будет происходить обмен файлами (upload/download с обоих сторон), так же нужно создавать директории, менять имена файлов, копировать файлы из одной директории в другую.
Пошарила я по .NET документации, информации крайне мало.
Нашла один пример самопального класса для работы с FTP написанного на VB.NET, но я не уверена, что это будет работать и функциональность у него ограниченная.
Может кто-нибудь подсказать где раздобыть побольше информации и примеров?
Видела в Google некоторые распространяют библиотеки для работы с FTP, но не бесплатно. Покупать такую библиотеку фирма не будет. Может у кого есть ссылка на подобные бесплатные библиотеки?
В общем, очень надеюсь на помощь.
-
- Уже с Приветом
- Posts: 569
- Joined: 14 Dec 2003 04:06
- Location: Львов->Киев->Торонто
Re: Приложение на .NET для работы с FTP
AnyaGal wrote:Надо написать приложение (ASP.NET) для работы с FTP сервером.
Может кто-нибудь подсказать где раздобыть побольше информации и примеров?
Видела в Google некоторые распространяют библиотеки для работы с FTP, но не бесплатно.
Мне найти пример на гуугле заняло меньше времени чем написать это письмо
http://codeproject.com/dotnet/dotnetftp.asp
http://www.c-sharpcorner.com/winforms/N ... _Beta2.asp
http://www.developerfusion.com/show/4340/
Запрос гуглу: ftp c# "source code"
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
-
- Уже с Приветом
- Posts: 5347
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
Посмотрела примеры, надеюсь, что основное смогу взять оттуда. Но нигде не увидела метода, который мог бы копировать файл на FTP сервере из одной директории в другую. Есть upload/download/delete/rename/create directory/delete directory/change directory.
А мне надо будет сделать upload файла в одну директорию, потом его там переименовать, пoсле чего этот переименованый файл поместить в другую директорию на том же FTP сервере. Как это осуществить в общих чертах?
Есть ли такая команда на FTP сервере в принципе? Если есть, то странно, почему ни в одном из довольно подробных примеров (я просмотрела штук восемь) такая команда не имплементирована.
Извиняюсь заранее если мой вопрос кажется глупым, но это будет мой первый опыт работы с FTP в принципе, так что я пока в этом деле чайник.
А мне надо будет сделать upload файла в одну директорию, потом его там переименовать, пoсле чего этот переименованый файл поместить в другую директорию на том же FTP сервере. Как это осуществить в общих чертах?
Есть ли такая команда на FTP сервере в принципе? Если есть, то странно, почему ни в одном из довольно подробных примеров (я просмотрела штук восемь) такая команда не имплементирована.
Извиняюсь заранее если мой вопрос кажется глупым, но это будет мой первый опыт работы с FTP в принципе, так что я пока в этом деле чайник.
-
- Уже с Приветом
- Posts: 5347
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
-
- Уже с Приветом
- Posts: 10367
- Joined: 12 Apr 2001 09:01
- Location: Lithuania/UK
AnyaGal wrote:Посмотрела примеры, надеюсь, что основное смогу взять оттуда. Но нигде не увидела метода, который мог бы копировать файл на FTP сервере из одной директории в другую. Есть upload/download/delete/rename/create directory/delete directory/change directory.
А мне надо будет сделать upload файла в одну директорию, потом его там переименовать, пoсле чего этот переименованый файл поместить в другую директорию на том же FTP сервере. Как это осуществить в общих чертах?
Есть ли такая команда на FTP сервере в принципе? Если есть, то странно, почему ни в одном из довольно подробных примеров (я просмотрела штук восемь) такая команда не имплементирована.
Извиняюсь заранее если мой вопрос кажется глупым, но это будет мой первый опыт работы с FTP в принципе, так что я пока в этом деле чайник.
А если попробовать:
rename dir1/name1.txt dir2/name2.txt
Дальше, все будет только хуже. Оптимист.
-
- Уже с Приветом
- Posts: 569
- Joined: 14 Dec 2003 04:06
- Location: Львов->Киев->Торонто
AnyaGal wrote:Посмотрела примеры, надеюсь, что основное смогу взять оттуда. Но нигде не увидела метода, который мог бы копировать файл на FTP сервере из одной директории в другую. Есть upload/download/delete/rename/create directory/delete directory/change directory.
А мне надо будет сделать upload файла в одну директорию, потом его там переименовать, пoсле чего этот переименованый файл поместить в другую директорию на том же FTP сервере. Как это осуществить в общих чертах?
Есть ли такая команда на FTP сервере в принципе? Если есть, то странно, почему ни в одном из довольно подробных примеров (я просмотрела штук восемь) такая команда не имплементирована.
Извиняюсь заранее если мой вопрос кажется глупым, но это будет мой первый опыт работы с FTP в принципе, так что я пока в этом деле чайник.
Ну вам как мед так и ложку :)
http://www.rfc-editor.org/cgi-bin/rfcsearch.pl
Там печатаете ftp и получаете все стандарты на эту тему, после этого ищете описание команды rename и хачите наиболее понравившийся клиент добавляя эту команду
Первоисточники рулят!
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
KVA wrote:А почему бы сразу, не сделать upload в нужный folder с нужным именем?
А как сделать upload с нужным именем?
Там вроде в команде на уплоад нет параметра для второго измененного имени, только имя local file.
У download есть имя два параметра для remote name и local name, так что здесь вроде проще.
Задача такая, что customer service собирается хранить файлы для всех клиентов в одном фолдере с именами clientname_filename. Добавка "filename" может быть для многих клиентов одинакова (имя базы даных или еще какого файла с фиксированным именем). Но когда клиент логинится они хотят чтобы он видел только свои файлы и без приcтавки, чтобы клиенты думали, что для всех файлы одни и теже, и загружатся к ним этот файл должен с урезанной приставкой.
В итоге у всех клиентов будут файлы с именами "filename". Но тут может возникнуть проблема при upload. Если несколько клиентов будут aплодить файлы с одинаковым именем, то это наверное нехорошо. Поэтому появилась идея создавать временный фолдер для каждого клиента когда он делает upload, aплодить файл туда, там его переименовывать (добавлять префих "clientname" перед "filename") и помещать в общий фолдер. Таким образом client service будет знать где чей файл.
Может у кого будет идея как организовать этот процесс без использования временного фолдера. Но заводить постоянный фолдер на каждого клиента они не хотят.
Last edited by AnyaGal on 29 Jan 2004 18:58, edited 2 times in total.
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
Strannik223 wrote:Ну вам как мед так и ложку
http://www.rfc-editor.org/cgi-bin/rfcsearch.pl
Там печатаете ftp и получаете все стандарты на эту тему, после этого ищете описание команды rename и хачите наиболее понравившийся клиент добавляя эту команду
Первоисточники рулят!
Спасибо большое посмотрю.
Конечно хочется и мед и ложку и побыстрее.
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
Еще одна мысля на эту тему.
Есть довольно большая проблема - примерно 10 процентов кaстомеров вообще не могут получить доступа к FTP серверу по каким-то security причинам.
Поэтому есть вариант, который создаст больше трафика, но по идее устранит проблему - делать все через промежуточное звено - web server. К web серверу все коннектятся без проблем.
Будет ли работать такой сценарий:
Клиент запускает приложение (asp страницу), web server стучится на FTP, получает список файлов и отображает их на web странице, клиент видит файлы предназначенные для него, но без префикса, выбирает один или несколько файлов для download, жмет на какую-нибудь кнопку. Файлы с FTP отправляются во временный фолдер на web serever, там переименовываются, и затем отправляются к клиенту на машину.
С aплодом также, клиент выберает файлы на своей машине для upload, жмет кнопку, файлы едут на веб server во временный фолдер, там переименовываются (добавляется префих), и затем отправляются на FTP server.
То есть получается цепочка:
Клиент -> Web Sever -> FTP Serever
Клиент <- Web Sever <- FTP Serever
Может ли такое работать? И правильно ли я понимаю, что между Клиентом и Web Serverom будет использоваться HTTP протокол, а между Web Serverom и FTP Serverom - FTP протокол.
Если да, то бедная, я бедная, теперь с двумя протоколами разбираться придется.
Есть довольно большая проблема - примерно 10 процентов кaстомеров вообще не могут получить доступа к FTP серверу по каким-то security причинам.
Поэтому есть вариант, который создаст больше трафика, но по идее устранит проблему - делать все через промежуточное звено - web server. К web серверу все коннектятся без проблем.
Будет ли работать такой сценарий:
Клиент запускает приложение (asp страницу), web server стучится на FTP, получает список файлов и отображает их на web странице, клиент видит файлы предназначенные для него, но без префикса, выбирает один или несколько файлов для download, жмет на какую-нибудь кнопку. Файлы с FTP отправляются во временный фолдер на web serever, там переименовываются, и затем отправляются к клиенту на машину.
С aплодом также, клиент выберает файлы на своей машине для upload, жмет кнопку, файлы едут на веб server во временный фолдер, там переименовываются (добавляется префих), и затем отправляются на FTP server.
То есть получается цепочка:
Клиент -> Web Sever -> FTP Serever
Клиент <- Web Sever <- FTP Serever
Может ли такое работать? И правильно ли я понимаю, что между Клиентом и Web Serverom будет использоваться HTTP протокол, а между Web Serverom и FTP Serverom - FTP протокол.
Если да, то бедная, я бедная, теперь с двумя протоколами разбираться придется.
-
- Уже с Приветом
- Posts: 5347
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
blanko27 wrote:RNFR RNTO ?AnyaGal wrote:А мне надо будет сделать upload файла в одну директорию, потом его там переименовать, пoсле чего этот переименованый файл поместить в другую директорию на том же FTP сервере.
Спасибо, посмотрю эти команды подробнее. Правда я их уже видела и на первый взгляд мне не показалось, что они помогут в моем случае. Может просто я неправильно поняла для чего они предназначены из описания.
Хотя, похоже, все равно придется все это делать через веб сервер, чтобы все клиенты могли этим пользоваться. Почему-то не все могут достучаться до FTP сервера напрямую.
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
Отличную функциональность я видел у Hummingbird Connectivity FTP. Там также была имплементирована команда MOVE или что-то вроде этого, сейчас уже не помню. Наверное можно найти в мануалах по нему где-то на www.hummingbird.com/products/nc/ftp/
...а мы такой компанией, возьмем, да и припремся к Элис!
-
- Уже с Приветом
- Posts: 569
- Joined: 14 Dec 2003 04:06
- Location: Львов->Киев->Торонто
Security проблемы хорошо известные
Не во всех корпорациях разрешен выход по иным чем http портам
Идея с http хорошая, надо только ее развить до SOAP (aka Web Service) В таком случае зачем нужен ftp? Пусть веб сервер с файл сервером по SMB (aka file share) общаются
Каков средний и максимальный размер файлов?
Какова планируемая и максимальная нагрузка на сервер, количество одновременных клиентов?
Максимальное количество файлов на файл сервере?
Клиент какой? .net? web browser?
Не во всех корпорациях разрешен выход по иным чем http портам
Идея с http хорошая, надо только ее развить до SOAP (aka Web Service) В таком случае зачем нужен ftp? Пусть веб сервер с файл сервером по SMB (aka file share) общаются
Каков средний и максимальный размер файлов?
Какова планируемая и максимальная нагрузка на сервер, количество одновременных клиентов?
Максимальное количество файлов на файл сервере?
Клиент какой? .net? web browser?
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
Это все я как раз собиралась разузнать. Если использовать веб сервер в середине, то зачем тогда нужен FTP не знаю. Пока все в стадии анализа, но скоро надо будет реально приступать.
Про web servisy и SOAP я наслышана и зачем они нужны понимаю, но пока не было возможности применить их на практике, интересно было бы попробовать их тоже каким-нибудь боком задействовать.
Просто я никогда раньше с networking не работала, поэтому все кажется новым и не совсем понятным.
P.S. Web server будет с .NET, клиент - web броузер.
P.P.S. Файлы могут быть большие, сотни мегабайт могут встретиться запросто, но я точных данных пока не знаю. Знаю только что файлы с базами данных могут присутствовать, а они как правило маленькими не бывают.
Про web servisy и SOAP я наслышана и зачем они нужны понимаю, но пока не было возможности применить их на практике, интересно было бы попробовать их тоже каким-нибудь боком задействовать.
Просто я никогда раньше с networking не работала, поэтому все кажется новым и не совсем понятным.
P.S. Web server будет с .NET, клиент - web броузер.
P.P.S. Файлы могут быть большие, сотни мегабайт могут встретиться запросто, но я точных данных пока не знаю. Знаю только что файлы с базами данных могут присутствовать, а они как правило маленькими не бывают.
-
- Уже с Приветом
- Posts: 5347
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
AnyaGal wrote:P.P.S. Файлы могут быть большие, сотни мегабайт могут встретиться запросто, но я точных данных пока не знаю. Знаю только что файлы с базами данных могут присутствовать, а они как правило маленькими не бывают.
Ну вы попали... Готовьтесь изучать как докачка работает и писать свой протокол докачки. Вероятность что такие здоровые файлы down(up)load пройдут за один раз может быть != 1.
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
KVA wrote:AnyaGal wrote:P.P.S. Файлы могут быть большие, сотни мегабайт могут встретиться запросто, но я точных данных пока не знаю. Знаю только что файлы с базами данных могут присутствовать, а они как правило маленькими не бывают.
Ну вы попали... Готовьтесь изучать как докачка работает и писать свой протокол докачки. Вероятность что такие здоровые файлы down(up)load пройдут за один раз может быть != 1.
Ну спасибо обнадежили.
Я уже правда и сама успела испугаться.
На самом деле клиенты уже как-то качают эти самые файлы сами напрямую с FTP, ошибки вроде бывают, но это вроде некритично пока. Поэтому на первых порах хорошо бы если бы все осталось как раньше, только добавить всю это фигню с переименованием и сделать web страничку в качестве UI.
Если бы я нашла способ как копировать файлы из одного фолдера на FTP в другой, то на этом можно было бы остановиться.
А вот добавлением Web сервера посередине усложнило задачу как мне кажется, по крайней мере я тепeрь совсем запуталась, какие технологии и протоколы использовать и в каком направлении двигаться.
SMB, WebDev что я слышала мне должно помочь каким-то волшебным образом пока для меня только новые страшные слова. От слов FTP, HTTP уже правда ужас не охватывает.
Вроде в .NET когда делают upload/download с web сервера используют WebClient, HTTPInputFile и еще какие-то там. Посмотрела на .NET-овских форумах, вроде с маленькими файлами просто, а с большими проблемы возникают.
Я была бы очень признательнa, если кто-нибудь хотя бы в общих чертах обьяснил, как надо настроить работу в такой ситуации, какие технологии/протоколы на каком этапе использовать. Чтобы хотя бы знать в сторону смотреть и по каким ключевым слова искать информацию. Лучше что-нибудь не самое новое и навороченное, по которому и примеров-то не найти, а уже проверенное и работающее пусть и не идеально.
-
- Уже с Приветом
- Posts: 991
- Joined: 09 Sep 2001 09:01
- Location: The Earth
Вы бы не заморачивались с этими полусырыми free/swhareware штучками. Купите за пару сотен баксов хорошую коммерческую библиотеку. Их не мало. "И будет Вам щастья" Плюс дадите собрату программеру заработать на кусок хлеба с маслом. И у Вас головной боли меньше будет: support, documentation, reliability - этого за бесплатно не получают.
Ну а если фирма, перегоняющая сотни мегабайт данных не может раскошелиться на пару сотен баксов, тогда RTFM. Без этого никак. Описание стандарта FTP открыто для всех желающих.
Ну а если фирма, перегоняющая сотни мегабайт данных не может раскошелиться на пару сотен баксов, тогда RTFM. Без этого никак. Описание стандарта FTP открыто для всех желающих.
Best regards,
Michael Popov
Michael Popov
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
Так появилось больше информации.
Плохие новости - файлы могут быть действительно большими, пока самый большой 250 Mb.
Гнать их надо будет с FTP на Web server, а с Web servera на машину клиента. И тоже самое в обратном порядке.
FTP сервер нужен из-за того, что там хранится много файлов, которые занимают довольно большой обьем и платить за hosting этих больших файлов на web servere не хотят.
Хорошая новость, что проверенную библиотеку для работы с FTP купить готовы, правда лучше конечно не самую дорогую.
Может ли кто порекомендoвать хорушую библиотеку для работы с ней из .NET?
Нужна именно библиотека, а не Tool с User Inteface.
P.S. Может еще какую библиотеку для перекачки/закачки больших файлов с веб сервера кто порекомендует?
Спасибо заранее!
Плохие новости - файлы могут быть действительно большими, пока самый большой 250 Mb.
Гнать их надо будет с FTP на Web server, а с Web servera на машину клиента. И тоже самое в обратном порядке.
FTP сервер нужен из-за того, что там хранится много файлов, которые занимают довольно большой обьем и платить за hosting этих больших файлов на web servere не хотят.
Хорошая новость, что проверенную библиотеку для работы с FTP купить готовы, правда лучше конечно не самую дорогую.
Может ли кто порекомендoвать хорушую библиотеку для работы с ней из .NET?
Нужна именно библиотека, а не Tool с User Inteface.
P.S. Может еще какую библиотеку для перекачки/закачки больших файлов с веб сервера кто порекомендует?
Спасибо заранее!
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
-
- Уже с Приветом
- Posts: 569
- Joined: 14 Dec 2003 04:06
- Location: Львов->Киев->Торонто
AnyaGal wrote:Спасибо, я посмотрю.
Я тоже нашла много ссылок, но многие из них со своим UI.
Хотелось бы чтобы кто-нибудь мог порекомндовать основываясь на личном опыте.
Вот ведь совпадение: вчера начал исследование на тему управления файлами по локальной и глобальной сетям
Получил очень обнадеживающие результаты с remoting.
Скорость - всего процентов на 15% ниже чем просто копирование по локалке
(пишу по памяти)
Code: Select all
[i]server:[/i]
internal class ServerApp : MarshallByRef, IServerApp
{
Stream IServerApp.createFile(name) {
return File.Create("depo\"+name);
}
Stream IServerApp.openFile(name) {
return File.OpenRead("depo\"+name);
}
void IServerApp.deleteFile(name) {
File.Delete("depo\\+name");
}
}
[i]client:[/i]
internal class Client {
public run() {
ChannelService.RegisterChannel(new TcpClientChannel());
IAppServer server = (IAppServer)Activator.GetObject(
typeof(IAppServer),
"tcp://myFileServer:8080/FileServer-1.0/application"
);
Stream s = server.createFile("bla-bla.001");
byte[] buffer = new byte[50*1024];
s.Write(buffer,0,buffer.Length);
s.Close();
}
}
И все! Не надо никаких протоколов. Клиент пишет в файл даже не особо задумываясь о том что файл на самом деле находиться не локально а на сервере[/code]