Разработка приложений для Internet


Метод GetFile


Метод GetFile копирует файл с сервера FTP на диск локального компьютера. При этом вы фактически не имеете никакой возможности следить за процессом копирования. Если вы должны знать, какая часть файла скопирована в данный момент, то вместо метода GetFile надо использовать пару методов - метод OpenFile класса CFtpConnection и метод Read класса CInternetFile. Сначала надо открыть файл на сервере FTP при помощи метода OpenFile, а затем считывать из него данные с помощью метода Read. Мы продемонстрируем оба этих метода получения файла с сервера FTP в разделе “Загрузка файлов с сервера FTP”.

Ниже мы привели прототип метода GetFile:

BOOL GetFile(

   LPCTSTR pstrRemoteFile,

   LPCTSTR pstrLocalFile,

   BOOL bFailIfExists = TRUE,

   DWORD dwAttributes = FILE_ATTRIBUTE_NORMAL,

   DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY,

   DWORD dwContext = 1

);

Имя файла на сервере, который надо получить, передается методу GetFile через параметр pstrRemoteFile, а имя файла на диске локального компьютера - через параметр pstrLocalFile. Вы должны обязательно задать только эти два параметра. Остальные параметры имеют значения, принимаемые по умолчанию, и могут не указываться.

Параметр bFailIfExists определяет действие метода GetFile в случае, если в качестве параметра pstrLocalFile вы указали имя файла, который уже существует на диске локального компьютера. Если вы укажете в качестве параметра bFailIfExists значение TRUE или опустите этот параметр, тогда метод GetFile завершится с ошибкой. Если же параметр bFailIfExists равен FALSE то файл на локальном диске будет перезаписан. Предварительно у пользователя запрашивается разрешение на перезапись файла.

Метод GetFile позволяет выбрать атрибуты для файла, который создается на локальном диске компьютера. Эти атрибуты передаются методу через параметр dwAttributes.



Атрибут

Описание

FILE_ATTRIBUTE_NORMAL

Нормальный файл

FILE_ATTRIBUTE_READONLY

Файл, который можно открыть только для чтения

FILE_ATTRIBUTE_HIDDEN

Скрытый файл

FILE_ATTRIBUTE_SYSTEM

Системный файл

FILE_ATTRIBUTE_TEMPORARY

Временный файл

FILE_ATTRIBUTE_COMPRESSED

Компрессованый файл

FILE_ATTRIBUTE_DIRECTORY

Каталог

FILE_ATTRIBUTE_ARCHIVE

Архивный файл

В случае успешного завершения метод GetFile возвращает ненулевое значение. Если метод завершился с ошибкой, то он возвращает ноль, а причину ошибки можно узнать с помощью функции GetLastError.

Метод передачи данных с сервера FTP на локальный компьютер можно задавать через параметр dwFlags. Если вам надо передать двоичный файл без всяких перекодировок, укажите в качестве этого параметра значение FTP_TRANSFER_TYPE_BINARY (метод FTP Image - тип I).

Если вам надо принять только текстовые данные, то вы можете использовать для этого параметра значение FTP_TRANSFER_TYPE_ASCII. При этом выполняется перекодировка данных в зависимости от программного обеспечения, установленного на сервере (метод FTP ASCII - тип A).

Идентификатор контекста для операции загруки файла можно указать в параметре dwContext. По умолчанию в качестве идентификатора контекста используется значение 1.



Содержание раздела