Как правильно записать uri с пользователем
вроде как бы так - ftp://usertest:password@192.168.2.105:2222/
но энта фигня отчего-то не распознает UserInfo
Uri uri = new Uri(uriStr);
Нашёл блин
там поступает немного другая строка, которая показывается как:sftp:\\user..., хотя на самом деле "sftp:\user..."
Тогда другой вопрос - как сделать чтобы в пароле можно было использовать любые символы (типа - фыв:@12/) и для ввода пароля в текст не требовалось проги кодировщика
Файл "управления" с паролями и прочей ерундой будет вводит совершенно другой человек. Любое "сложное" кодирование потребует дополнительной проги.
Нужно "простое" кодирование, типа вместо @ записать @@ или \@, хотя с этим работы много. Проще, видимо, пароль записать в другом месте, а на месте пароля давать только ссылку на него, типа "password35"
Не понял, какая дополнительная прога? А ваш собственный метод кодирования - не такая же дополнительная прога?
Если что, этих HTML-кодирующих классов в дотнете минимум 3 штуки (МС развёл бардак):
.NET 4.8 - System.Web.dll - https://learn.microsoft.com/en-us/dotnet/api/system.web.ht...
.NET 7 - System.Runtime.dll - https://learn.microsoft.com/en-us/dotnet/api/system.net.we...
.NET 7 - System.Web.HttpUtility.dll - https://learn.microsoft.com/en-us/dotnet/api/system.web.ht...
Ну или вот ещё
https://learn.microsoft.com/en-us/dotnet/api/system.uri.es...
вроде как бы так - ftp://usertest:password@192.168.2.105:2222/
но энта фигня отчего-то не распознает
UserInfoUri uri = new Uri(uriStr);
Имхо всегда было через NetworkCredintal - см. https://learn.microsoft.com/ru-ru/dotnet/api/system.net.ne.... Пример тут https://codingvision.net/c-connecting-to-ftp-server:
FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://myFtpAddress.tld/myFile.txt"); ftpRequest.Credentials = new NetworkCredential("username", "password");

Имхо всегда было через NetworkCredintal
А причем здесь NetworkCredintal и доступ к ФТП?
Нужно правильно разобрать входные данные. Вопрос с доступом решен. Не решен вопрос как узнать, что файл полностью закачан на сервер? Office тоже выдает "интересный " сценарий записи файла.
Вообще-то в итоге должно получиться следующее: Есть текстовый сценарий наблюдения за фтп и другими хранилищами, как только туда загружается определенный файл, с ним делаются какие то операции, например записывается в какую-то базу, в зависимости от различных критериев.
Кстати, интересен также вопрос Юнит тестирования подобных штук с различными файловыми системами. На любой пук делать интерфейс не хочется.
Q1":@/<\дайте ка мне его допустимое представление без использования "компа" и пр.
Не понял. Как ввести пароль в комп без компа, или что?
Ну на листочке запишите ему удобный для вас пароль. Или на листочке же напишите ему, какие символы нельзя использовать (или какие можно - там буквы, цифры, и пару знаков).
Вообще, по жизни многие программистские проблемы решаются разговором по душам или волшебным пенделем - абстракции всякие и алгоритмы зачастую не нужны.
А причем здесь NetworkCredintal и доступ к ФТП?
Чтобы залогиниться как надо, и чтобы хакеры не увидели ту строчку, даже у PHP через ftp_login делается см. https://www.php.net/manual/ru/function.ftp-login.php. Во многих примерах именно через NetworkCredintal логинятся к FTP, например https://www.c-sharpcorner.com/article/working-with-ftp-usi....
Не решен вопрос как узнать, что файл полностью закачан на сервер?
Вот пример:https://web.archive.org/web/20150207155137/http://codular....

Чтобы залогиниться как надо
Типа, как бонус к вопросу, понятно...
Во многих примерах именно через NetworkCredintal логинятся к FTP
А никто не говорил как именно логинятся к ФТП. Скажу по секрету - без мелкософта.
Вот пример
Это пример загрузки файла на сервер. Задача же совсем другая - есть ФТП сервер и нужно узнать со стороны сервера, когда файл полностью загрузится.
Как появляется новый файл, можно узнать периодическим опросом каталога.
Никак.
тута аж 5 вариантов, хотя большинстов на клиенте
https://stackoverflow.com/questions/29238153/how-to-detect...
Как раз один совпадает с тем что делается
Задача же совсем другая - есть ФТП сервер и нужно узнать со стороны сервера, когда файл полностью загрузится.
Что значит "со стороны сервера"? Я - фтп сервер, клиент открыл со мной соединение и передаёт файл, а мне надо понять передали мне уже все данные?
Или я - клиент фтп сервера, и хочу узнать передал ли другой клиент какой-то файл до конца?
я - клиент фтп сервера, и хочу узнать передал ли другой клиент какой-то файл до конца
Ну вроде не планировалось запускать прогу прямо на сервере. Хотя да, неизвестно.
Что вот еще, не получается попробовать. Народ как то замапил фтп соединение на диск винды, как, вроде понятно, но повторить не получается.
Будет ли SystemFileWatcher работать в данном случае, подозреваю что нет. Но как отличить, такое соединение от обычного сетевого диска, там он работает. Пока еще не искал
Ну вроде не планировалось запускать прогу прямо на сервере. Хотя да, неизвестно.
А что самое смешное? То что не важно - сервер ты или другой клиент. Если ты по FTP работаешь, то правильный ответ: никак.
Емнип STOR означает "слушай соединенине с data и пиши всё, что получишь в файл". Как соединение закрылось - всё, значит закончили. А почему оно закрылось знает только клиент, который его открыл. И обычно он и проверяет всё ли закачалось. Закачал файлик - запросил какой размер у закачанного. Совпадает с исходным? Ну значит всё отлично, закончили.
Если ты сервер ftp, ты можешь пытаться "угадать", не было ли проблем. Вроде "если 60 секунд не приходило данных а потом закрылось соединение - наверное у клиента таймаут по сокету".
по FTP работаешь, то правильный ответ: никак
В теории да, но на практике, в данном случае, можно ошибками передачи пренебречь.
Данные передаются устройствами, данных мало. Пусть даже какой то процент файлов будет бракованный - это всё равно лучше чем ничего.
Хотя, видимо, правильнее будет соединить устройства со спец. фтп, который сразу будет данные в базу записывать (кроме фтп у устройств больше ничего нет)