Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

Глючит IdFTP   Найти похожие ветки 

 
Defunct ©   (2004-02-19 06:51) [0]

Закачиваю одни и те же файлы на Unix сервер и на MS-FTP сервер.
Скачиваю с помощью IndyFTP (TIdFTP). Почему-то при скачивании с Unix сервера содержимое скачанных файлов иногда не совпадает с огигиналом (то на 20 байт больше размер, то на 5 байт, и т.п.), естессно такие файлы теряют ценность. С MS-FTP работает корректно. Что я делаю не так и как это исправить?
Вот процедура приема файла:

Procedure TForm1.ReceiveFile(FileName:String);
Var Stream: TFileStream;
Begin
Try
  Stream := TFileStream.Create(WorkDirectory+FileName,fmCreate);
  Try
    IdFTP.TransferType := ftBinary;
    IdFTP.Get(FileName,Stream);
  Except
    On EIdException Do Error := ce_ReadError;
  End;
Finally
  Stream.Free;
End;
End;


PS: Отправка работает правильно независимо от типа сервера.


 
Defunct ©   (2004-02-19 07:06) [1]

Возможно я задал вопрос некоррекно.
Правильней вопрос поставить так:

Как настроить IdFTP на работу с Unix сервером?


 
Defunct ©   (2004-02-19 08:28) [2]

Еще одно уточнение:
неверно скачиваются бинарные файлы аля BMP, JPG

Текстовые файлы (TXT, HTM) скачиваются правильно.


 
Verg ©   (2004-02-19 09:42) [3]


> Как настроить IdFTP на работу с Unix сервером?

Да не надо ничего "настраивать".
Вот работает все нормально у меня. Хоть UNIX хоть что.
Есть у меня подозрение, что Indy, поставляемая с D7 глкава.
Слушайте, зайдите вы наконец на http://www.indyproject.org да и скачайте себе последнюю версию (по-моему 9.14), но не бета.


 
Leech   (2004-02-19 10:56) [4]

Я скачал Indy, удалил старый, запустил Computil.exe, создалась новая папка D6... Там dclIndy60.bpl... Пытаюсь его подключить - на что ошибка: "Точка входа в процедуру ... не найдена в библиотеке DLL Indy60.bpl"... Я что-то ещё должен был удалить? Или что не так?


 
Leech   (2004-02-19 11:03) [5]

Ой, сорри... я запускал Fulld6.bat


 
wal ©   (2004-02-19 11:07) [6]

Что-то где-то краем уха я слышал про двоичный и текстовый формат передачи. Двоичный передает все "как есть", а вот с текстовым сложнее. То ли он при передаче преобразует комбинацию <cr><lf> посто в <lf>, то ли наоборот, но пост [2], шепчет мне, что копать нужно в этом направлении.

С уважением.


 
Defunct ©   (2004-02-19 11:14) [7]

Спасибо, с версией 9.14 все заработало


 
Leech   (2004-02-19 11:19) [8]

2 Defunct ©
 как проинсталлить Indy?


 
Defunct ©   (2004-02-19 11:32) [9]

Запустить соотв. версии Delphi батник, ну и скопировать все что появится в каталоге ..\Dx, где x версия Delphi в католог <Delphi install dir>\Lib


 
Leech   (2004-02-19 12:24) [10]

> Спасибо, с версией 9.14 все заработало

А у меня нет... При попытке выполнить процедуры Get или List - "Connection closed Gracefylli"...


 
Leech   (2004-02-19 12:28) [11]

Хотя на сервере всё проходит нормально, файл приходит, но пустой.. Вот логи сервера:
19.02.2004 11:32:36 - (     6) 230 User f02 logged in successfully **
19.02.2004 11:32:36 - (     6) TYPE I
19.02.2004 11:32:36 - (     6) 200 Type set to Image (binary)
19.02.2004 11:32:36 - (     6) SYST
19.02.2004 11:32:36 - (     6) 215 UNIX Type: L8
19.02.2004 11:32:39 - (     6) PORT 192,168,0,99,13,90
19.02.2004 11:32:40 - (     6) 200 Port command successful
19.02.2004 11:32:40 - (     6) RETR message.mess
19.02.2004 11:32:40 - (     6) 150 Opening binary data connection
19.02.2004 11:32:40 - (     6) 226 Transfer complete
19.02.2004 11:32:55 - (     6) "Error: [10054] Connection reset by peer
19.02.2004 11:32:55 - FTP connection with 192.168.0.99 ended. ID=6


 
Leech   (2004-02-19 12:48) [12]

Последнее событие, кторое происходит у IdFTP - "OnWorkBegin"


 
Leech   (2004-02-19 13:02) [13]

Всё, разобрался... Если ещё у кого возникает такая ошибка - Вот:
"This exception class is raised when a connection has been closed gracefully. Because it descends from EIdSilentException, it behaves like the VCL EAbort exception. We recommend that you set your IDE to ignore those exceptions by clicking Tools|Debugger Options..|Language Exceptions|Add and entering "EIdSilentException
"."


 
nikkie ©   (2004-02-19 19:22) [14]

>неверно скачиваются бинарные файлы аля BMP, JPG
>Текстовые файлы (TXT, HTM) скачиваются правильно.

налицо неверно указанный тип передачи данных. хорошо было бы сделать лог и посмотреть, посылается команда TYPE I. судя по IdFTP.pas от версий 8 и 9 она может не посылаться, если подключались с помощью IdFTP.Connect(False). в этом случае надо руками вызвать SendTransferType.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.036 c
7-1076937793
МАКСЮХА
2004-02-16 16:23
2004.04.18
Запуск программы от имени пользователя


1-1080888417
Layner
2004-04-02 10:46
2004.04.18
Как прекратить поток?


1-1080549354
YT
2004-03-29 12:35
2004.04.18
Как проверить что окно было последним с которым работал


3-1079959339
Bizon
2004-03-22 15:42
2004.04.18
DBF в Interbase


1-1080642232
Timego
2004-03-30 14:23
2004.04.18
Подскажите, пожалуйста, хорошую книгу по Delphi для начинающих





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский