Шаг 40.
Компонент TNMFTP

    На этом шаге мы рассмотрим основные свойства и методы компонента 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. Главное, чтобы в этой строке присутствовал символ "коммерческое эт" (@). Таких "анонимных" серверов в Интернет довольно много, и используются они как публичные архивы программ и документов. После определения этих свойств вызывайте метод Connect для установления связи с сервером.

    Этот компонент имеет следующие основные свойства:

    Специфических методов у этого компонента несколько больше:

    Остальные методы и свойства этого компонента наследуются. Ниже мы разберем основные возможности этого компонента и разберем перечисленные свойства и методы.

    Если метод компонента TNMFTP завершается успешно, то генерируется событие OnSuccess, в противном случае происходит событие OnFailure. В обоих случаях через параметр Trans_Type обработчиков этих событий передается имя команды типа TCmdType. Этот параметр может принимать следующие значения:

    Имя метода, к которому относится данное значение, определить нетрудно.

Определение содержимого каталога на удаленном компьютере

    Если вы уже подключены к серверу, то можете получить список файлов и каталогов текущего каталога при помощи метода List и обработчика события OnListltem, которое вызывается для каждого элемента списка. Вы можете обрабатывать каждый элемент каталога в обработчике этого события или включить режим разбора строк элементов каталога, установив свойство ParseList в True. В последнем случае компонент разберет полученные данные и поместит имена, размеры файлов, атрибуты, время последнего изменения в составное свойство FTPDirectoryList. Каждый элемент этого свойства представляет собой объект типа TStringList. Для указанных элементов списка содержимого каталога эти объекты имеют имена Name[i], Size[i], ModifDate[i], Attribute[i]. Если метод List завершается успешно, то происходит событие OnSuccess, в противном случае генерируется событие OnFailure. В обоих случаях параметр Trans_Type обработчиков этих событий получает значение cmdList.

    Метод NList представляет собой сокращенный вариант команды List и используется для получения только имен файлов и каталогов.

    К перечню методов

Изменение текущего каталога на удаленном компьютере

    Вы можете перейти в другой каталог сервера FTP, вызывая метод ChangeDir с именем нужного вам каталога, которое передается через параметр DirName. В DirName можно указывать полный путь или имя каталога относительно текущего, рабочего каталога. Если метод ChangeDir завершается успешно, то генерируется событие OnSuccess, в противном случае - событие OnFailure. В обоих случаях параметр Trans_Type обработчиков этих событий получает значение cmdChangeDir.

    К перечню методов

Загрузка файлов на удаленный компьютер

    Для загрузки файлов в текущий каталог на удаленном компьютере используется метод Upload. Метод использует два параметра - имя файла на локальном компьютере и имя, под которым он будет сохраняться на удаленном компьютере: LocalFile и RemoteFile. Нужно заметить, что для выполнения этой операции у вас должны быть соответствующие права на удаленном компьютере. Обычно серверы FTP предоставляют такие права в каталоге incoming. В том случае, если на сервере уже есть файл с тем же именем, с которым вы хотите создать новый, - этот файл будет перезаписан. Избежать этого эффекта можно, если использовать метод UploadUnique. Единственный параметр LocalFile этого метода определяет имя файла на локальном компьютере и использует его для создаваемого файла на сервере. Если на сервере файл с таким именем уже существует, то передаваемый файл будет создан с уникальным именем. Метод UploadRestore хорош тем, что он позволяет восстановить прерванный в предыдущем сеансе процесс загрузки файла с места, в котором произошел обрыв. Последний метод из этой серии - это метод UploadAppend. Метод позволяет дописывать содержимое локального файла в конец файла на сервере, если файл существует. Если на сервере такого файла нет, то файл создается заново. Два последних метода имеют два параметра LocalFile и RemoteFile.

    К перечню методов

Загрузка файлов с удаленного компьютера

    Перед загрузкой файлов с удаленного компьютера имеет смысл вызвать метод List и убедиться, что нужный вам файл имеется на удаленном компьютере. После этого можно вызвать метод по имени Download, передав ему в качестве параметров имя загружаемого файла и имя файла и каталога на локальном компьютере: параметры RemoteFile и LocalFile. Нужно заметить, что загружать файлы из любого каталога FTP-сервера обычно не разрешается. Вы сможете делать это только из каталогов, открытых для этой операции. Разумеется, если на вашем компьютере уже имеется файл, совпадающий по имени с загружаемым файлом, то он будет перезаписан. На случай обрыва связи можно использовать метод DownloadRestore, который "умеет" продолжать загрузку с того места, на котором произошел обрыв связи. К сожалению, не все серверы FTP поддерживают этот режим передачи файлов.

    К перечню методов

Создание каталога на удаленном компьютере

    Для выполнения этой операции у вас должны быть соответствующие права. Обычно на FTP-серверах эти права выделяются на каталог incoming. Для создания каталога достаточно вызвать метод MakeDirectory, передав ему в качестве параметра имя того каталога, который вы хотите создать.

    К перечню методов

Удаление файла или каталога на удаленном компьютере

    Файл удаляется методом Delete, а для удаления каталога применяется метод RemoveDir. Можно задавать имя файла или каталога внутри текущего каталога или указывать полный путь и имя удаляемого объекта. И опять вам понадобятся соответствующие права на удаление каталога или файла. Если они у вас есть, то смело вызывайте метод RemoveDir или Delete, только не ошибитесь в имени каталога или файла!

    К перечню методов

    Мы не упомянули еще методы Allocate, DoCommand, Mode, Reinitialize и Rename. Первый метод выделяет место на сервере FTP под создаваемый файл. Как правило, этого делать не требуется, но если вам придется работать с таким сервером, который требует выделения дисковой памяти перед закачкой на него файла, то этот метод может понадобиться.

    Метод DoCommand позволяет послать команду серверу FTP, который должен ее выполнить. Имеется в виду команда операционной системы. Этот метод может вам понадобиться, если для выполнения вашей задачи методов компонента TNMFTP окажется недостаточно, либо когда вам попадется сервер с нестандартными командами.

    Метод Rename используется для переименования файла в текущем каталоге на удаленной машине. Первый параметр FileName задает имя файла, который нужно переименовать, второй параметр - FileName2 - новое имя для заданного файла.

    Метод Mode задает режим приема/передачи файлов. Используются три режима. Соответственно параметр TheMode может принимать следующие значения:

    Метод Reinitialize используется для восстановления прерванного соединения. После этого метода требуется зарегистрироваться, ввести имя пользователя и пароль.

    К перечню методов

    На следующем шаге мы рассмотрим пример, иллюстрирующий использование перечисленных свойств и методов компонента TNMFTP.




Предыдущий шаг Содержание Следующий шаг