Поделиться через


Функция FtpOpenFileA (wininet.h)

Инициирует доступ к удаленному файлу на FTP-сервере для чтения или записи.

Синтаксис

HINTERNET FtpOpenFileA(
  [in] HINTERNET hConnect,
  [in] LPCSTR    lpszFileName,
  [in] DWORD     dwAccess,
  [in] DWORD     dwFlags,
  [in] DWORD_PTR dwContext
);

Параметры

[in] hConnect

Обработка сеанса FTP.

[in] lpszFileName

Указатель на строку, завершающуюся нулевым значением, которая содержит имя файла, к которому будет осуществляться доступ.

[in] dwAccess

Доступ к файлам. Этот параметр может быть GENERIC_READ или GENERIC_WRITE, но не одновременно.

[in] dwFlags

Условия, при которых происходит передача данных. Приложение должно выбрать один тип передачи и любой из флагов, указывающих, как будет контролироваться кэширование файла.

Тип передачи может иметь одно из следующих значений.

Значение Значение
FTP_TRANSFER_TYPE_ASCII
Передает файл с помощью метода передачи ASCII (тип A) FTP. Сведения об элементе управления и форматировании преобразуются в локальные эквиваленты.
FTP_TRANSFER_TYPE_BINARY
Передает файл с помощью метода передачи образа (тип I) FTP. Файл передается в том виде, в который он существует, без изменений. Это метод передачи по умолчанию.
FTP_TRANSFER_TYPE_UNKNOWN
По умолчанию используется FTP_TRANSFER_TYPE_BINARY.
INTERNET_FLAG_TRANSFER_ASCII
Передает файл как ASCII.
INTERNET_FLAG_TRANSFER_BINARY
Передает файл в виде двоичного файла.
 

Следующие значения используются для управления кэшированием файла. Приложение может использовать одно или несколько из этих значений.

Значение Значение
INTERNET_FLAG_HYPERLINK
При определении того, следует ли перезагружать элемент из сети, принудительно выполняется перезагрузка, если не было возвращено время окончания срока действия и время последнего изменения с сервера.
INTERNET_FLAG_NEED_FILE
Вызывает создание временного файла, если файл не может быть кэширован.
INTERNET_FLAG_RELOAD
Принудительное скачивание запрошенного файла, объекта или списка каталогов с сервера-источника, а не из кэша.
INTERNET_FLAG_RESYNCHRONIZE
Перезагружает ресурсы HTTP, если ресурс был изменен с момента последнего скачивания. Все ресурсы FTP перезагружаются.

Windows XP и Windows Server 2003 R2 и более ранние версии: Ресурсы Gopher также перезагружаются.

[in] dwContext

Указатель на переменную, содержащую определяемое приложением значение, которое связывает этот поиск с любыми данными приложения. Используется только в том случае, если приложение уже вызывало InternetSetStatusCallback для настройки функции обратного вызова состояния.

Возвращаемое значение

Возвращает дескриптор в случае успешного выполнения или значение NULL в противном случае. Чтобы получить определенное сообщение об ошибке, вызовите Метод GetLastError.

Комментарии

После вызова FtpOpenFile и до вызова InternetCloseHandle все остальные вызовы функций FTP в том же дескриптоле сеанса FTP завершатся ошибкой, и сообщение об ошибке будет ERROR_FTP_TRANSFER_IN_PROGRESS. После завершения работы вызывающего приложения с помощью дескриптора HINTERNET , возвращаемого ftpOpenFile, его необходимо закрыть с помощью функции InternetCloseHandle .

В одном сеансе FTP можно открыть только один файл. Таким образом, дескриптор файла не возвращается, и приложение просто использует дескриптор сеанса FTP при необходимости.

Параметр lpszFileName может быть частичным или полным именем файла относительно текущего каталога.

Как и все другие аспекты API WinINet, эту функцию нельзя безопасно вызывать из библиотеки DllMain или из конструкторов и деструкторов глобальных объектов.

Примечание WinINet не поддерживает реализации сервера. Кроме того, его не следует использовать из службы. Для серверных реализаций или служб используйте службы Microsoft Windows HTTP (WinHTTP).
 

Примечание

Заголовок wininet.h определяет FtpOpenFile в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header wininet.h
Библиотека Wininet.lib
DLL Wininet.dll

См. также раздел

Сеансы FTP

Функции WinINet