Контакты Поиск
01.09.2022 12:24
raidex
 
Олег, подскажи пожалуйста

Есть ftp сервер, я могу зайти в него через Total Commander ( это приложение Windows )

Могу туда писать и читать

Вижу права - на папке 755, на файлах 644, на .ftpquota 600


Но при попытке из delphi выполнить программу ftp.list я получаю в ответ

" 550 Can't check for file existence "


Бьюсь уже 3 часа, просто не знаю, куда копать, что читать

Это надо делфи копать, фтп или линукс ?
01.09.2022 13:18
OlegON
 
Тут много что может быть и доступ через коммандер ни о чем не говорит толком. Но, если попадаешь коммандером, то к FTP-серверу уже вопросов должно быть меньше.
Во-первых, FTP может быть активным или пассивным. Как ты подключаешься в Delphi ты не сказал.
Во-вторых, обычно надо не только подключиться, но и перейти в какую-то директорию. По умолчанию она может не совпадать с ожиданиями.
И, наконец, list может быть достаточно разнообразный.

Я бы рекомендовал не коммандер. Берешь в винде консольку и команду ftp. Сейчас не знаю, раньше была.
Если нет в винде, можешь lftp взять, например. И последовательно вбиваешь команды туда, начиная с open... Включишь дебаговое отображение, посмотришь, что возвращают команды... Потом перенесешь их в код.
01.09.2022 16:09
raidex
 
Разобрались

Мы использовали метод ftp.list

а надо было

FTP.extLISTdir

Это удалось обнаружить после нахождения данного текста в сети :

Цитата:
Синхронизация каталогов и FTP-серверов с MLSD

Важная информация. Пожалуйста, прочтите!

Использование команды MLSD для получения списка файлов

Начиная с версии 7.51 Total Commander для получения содержимого каталога с сервера использует по умолчанию команду MLSD (сокр. от machine list directory) вместо LIST. Это даёт следующие преимущества:

1. Метки даты/времени передаются с точностью до секунды, тогда как в ответе на LIST зачастую содержатся только часы и минуты.
2. Время передаётся по UTC (универсальному времени, также известному как время по Гринвичу), что упрощает синхронизацию с серверами, находящимися в разных часовых поясах.
3. Формат MLSD стандартизован, поэтому опасность некорректной интерпретации возвращаемого списка значительно ниже.

Возможные проблемы при синхронизации с использованием MLSD

При использовании MLSD могут возникнуть проблемы, и вам следует знать о них:

1. Если вы использовали старые версии Total Commander для синхронизации каталогов, эта синхронизация могла выполняться на основе очень грубых меток даты/времени: команда LIST на Unix-серверах часто возвращает время без указания секунд, а для старых файлов вообще не указывает время, только дату!

Таким образом, множество файлов, которые считались одинаковыми в TC 7.50a и ранее, теперь могут обозначаться как устаревшие или обновившиеся. Если вы уверены, что исходный и целевой файлы одинаковы, то можете скопировать метки даты/времени с удалённых файлов на локальные.

2. Некоторые старые серверы возвращают информацию о символических ссылках так, как если бы они были обычными файлами и каталогами, тогда как LIST обычно содержит информацию о реальном типе объекта. Инструмент синхронизации игнорирует ссылки, чтобы избежать бесконечной рекурсии, что становится невозможным, если ссылки не удаётся определить. Если вы работаете с таким сервером и используете символические ссылки в каталоге, который намереваетесь синхронизировать, вам необходимо отключить использование команды MLSD в настройках подключения
01.09.2022 16:22
raidex
 
Дополнительно нашёл то что этот вопрос задавали на стековерфло 7 лет тому назад

Часовой пояс GMT +3, время: 19:33.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.