Компонент TNMFTP

Компонент tnmftp предназначен для обмена файлами между сервером ftp и клиентской машиной по протоколу ftp. ftp является одной из старейших и заслуженных служб интернета. 
Она существовала тогда, когда ещё не было www и предоставляла удобный по тем временам сервис для обмена файлами и организации различных архивов документов и программ. Сейчас получить доступ к серверу ftp можно непосредственно из браузера www, так что клиентские программы для работы с сервером ftp уже не так актуальны. Мы рассмотрим пример с этим компонентом, поскольку такая программа может потребоваться для работы с корпоративным ftp-сервером, где доступ разграничен и требуется пройти идентификацию для доступа к файловому архиву. 
Перед использованием компонента tnmftp для обмена файлами с удалённым компьютером вам нужно подключиться к серверу ftp. Для этого вы должны определить свойства host и port значениями, соответствующими нужному серверу ftp. Затем задайте в свойствах userid и password необходимые имя пользователя и пароль. Многие публичные серверы ftp принимают значение anonymous в качестве имени пользователя и в качестве пароля ваш e-mail или строку, напоминающую e-mail, например, user@mycomputer.com, главное, чтобы в этой строке присутствовал символ собачки "@". Таких анонимных серверов в интернет довольно много и используются они как публичные архивы программ и документов. После определения свойств userid и password вызывайте метод connect для установки связи с сервером. 
Компонент tnmftp имеет следующие основные свойства: 
* currentdir 
* ftpdirectorylist 
* onlistitem 
* parselist 
* password 
* userid 
* vendor
Специфических методов у этого компонента немного больше: 
* allocate 
* changedir 
* delete 
* docommand 
* download 
* downloadrestore 
* list 
* makedirectory 
* mode 
* nlist 
* reinitialize 
* removedir 
* rename 
* upload 
* uploadappend 
* uploadrestore 
* uploadunique 
Остальные свойства и методы этого компонента наследуются. Ниже мы разберём основные возможности этого компонента и разберём перечисленные свойства и методы. 
Если метод компонента tnmftp завершается успешно, то генерируется событие onsuccess, в противном случае возникает событие onfailture. В обоих случаях через параметр trans_type обработчиков этих событий передаётся имя команды типа tcmdtype. Этот параметр может принимать следующие значения: 
* cmdchangedir 
* cmdmakedir 
* cmddelete 
* cmdremovedir 
* cmdlist 
* cmdrename 
* cmduprestore 
* cmddownrestore 
* cmddownload 
* cmdupload 
* cmdappend 
* cmdreinit 
* cmdallocate 
* cmdnlist 
* cmddocommand 
* cmdcurrentdir 
Думаю, имя метода, к которому относится данное значение определить не трудно 
=== Определение содержимого каталога на удалённом компьютере: ===
Если вы уже подключены к серверу, вы можете получить список файлов файлов и каталогов текущего каталога при помощи метода list и обработчика события onlistitem, которое вызывается для каждого элемента списка. Вы можете обрабатывать каждый элемент каталога в обработчике этого события. или включить режим разбора строк элементов каталога, установив свойство parselist в true. В последнем случае компонент разберёт полученные данные и поместит имена, размеры файлов атрибуты, время последнего изменения в составное свойство ftpdirectorylist. Каждый элемент этого свойства представляет собой объект типа tstringlist. Для указанных элементов списка содержимого каталога эти объекты имеют имена name[i], size[i], modifdate[i], attribute[i]. Если метод list завершается успешно, то происходит событие onsuccess, в противном случае генерируется событие onfailure. Метод nlist представляет собой сокращённый вариант команды list и используется для получения только имён файлов и каталогов. 
=== Изменение текущего каталога на удалённом компьютере: ===
Вы можете перейти на другой каталог сервера ftp, вызывая метод changedir с именем нужного вам каталога, которое передаётся через параметр dirname. В dirname можно указывать полный путь или имя каталога относительно текущего каталога. 
=== Загрузка файлов на удалённый компьютер: ===
Для загрузки файлов в текущий каталог на удалённом компьютере используем метод upload. Метод использует 2 параметра: имя файла на локальном компьютере и имя, под которым он будет сохраняться на удалённом [localfile, remotefile]. Нужно заметить, что для выполнения данной операции у вас должны быть соответствующие права на удалённом компьютере. Обычно серверы ftp предоставляют такие права в каталоге incoming. В том случае, если на сервере уже есть файл с тем же именем, с которым вы хотите создать новый, - этот файл будет перезаписан. Избежать этого эффекта можно, если использовать метод uploadunique. Единственный параметр localfile этого метода определяет имя файла на локальном компьютере и использует его для создаваемого файла на сервере. Если на сервере файл с таким именем уже существует, то передаваемый файл будет создан с уникальным именем. Метод uploadrestore хорош тем, что он позволяет восстановить прерванный в предыдущем сеансе процесс загрузки файла с места, в котором произошёл обрыв. Последний метод из этой серии uploadappend позволяет дописывать содержимое локального файла в конец файла на сервере, если файл существует. Если на сервере такого файла нет, то файл создаётся заново. Два последних метода имеют 2 параметра localfile и remotefile. 
=== Загрузка файлов с удалённого компьютера: ===
Перед загрузкой файлов с удалённого компьютера имеет смысл вызвать метод list и убедиться, что нужный вам файл имеется на удалённом компьютере. После этого можно вызвать метод по имени download передав ему в качестве параметров имя загружаемого файла и имя файла и каталога на локальном компьютере: параметры remotefile и localfile. Нужно заметить, что загружать файлы из любого каталога ftp-сервера обычно не разрешается. Вы можете сделать это только из каталогов, открытых для этой операции. Если на вашем компьютере уже имеется файл с таким именем он будет перезаписан. На случай обрыва связи можно использовать метод downloadrestore, который позволит продолжить загрузку с того места, на котором произошёл обрыв связи. 
=== Создание каталога на удалённом компьютере: ===
Для выполнения этой операции у вас должны быть соответствующие права. Обычно на ftp-серверах эти права выделяются на каталог incoming. Для создания каталога достаточно вызвать метод makedirectory, передав ему в качестве параметра имя того каталога, который вы хотите создать. 
=== Удаление файла или каталога на удалённом компьютере: ===
Файл удаляется методом delete, а для удаления каталога применяется метод removedir. Можно задавать имя файла или каталога внутри текущего каталога или указывать полный путь и имя удаляемого объекта. 
Мы не упомянули ещё методы allocate, docommand, mode, reinitialize и rename. Первый метод выделяет место на ftp сервере под создаваемый файл. Как правило, этого делать не требуется, но если вам придётся работать с таким сервером, который требует выделения дисковой памяти перед закачкой на него файла, то этот метод может понадобится. 
Метод docommand позволяет посылать команду ftp-серверу, который должен её выполнить. Имеется в виду команда операционной системы. Этот метод может вам понадобиться, если для выполнения вашей задачи методов компонента tnmftp окажется недостаточно, либо если вам попадётся сервер с нестандартными командами. 
Метод rename используется для переименования файла в текущем каталоге на удалённой системе. Первый параметр filename задаёт имя файла, который нужно переименовать, второй - filename2 - новое имя для заданного файла. 
Метод mode задаёт режим приёма/передачи файлов. Используются 3 режима. Соответственно параметр themode может принимать соответствующие значения: 
* mode_ascii - передача текстовых данных 
* mode_image - двоичные данные с 8-битовыми байтами 
* mode_byte - двоичные данные с байтами переменной длины 
Метод reinitialize используется для восстановления прерванного соединения. После этого метода требуется зарегистрироваться, ввести имя пользователя и пароль.
Source: sources.ru
ID: 03378
Category:Связь