Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Компонент TNMFTP

Сидит Дрим перед компом, занимается аутотренингом:
- Я не войду в Интернет, я не войду в Интернет, я не войду в Интернет...
Срывается, стучит что-то на клавиатуре. На дисплее появляется: "Delphi World". Дрим:
- Это не я... Это не я...

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

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay