Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Компонент TNMFTP

01.01.2007

Компонент 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 используется для восстановления прерванного соединения. После этого метода требуется зарегистрироваться, ввести имя пользователя и пароль.
 

Источник: sources.ru