ftpGetFileA 函数 (wininet.h)

从 FTP 服务器检索文件并将其存储在指定的文件名下,并在进程中创建新的本地文件。

语法

BOOL FtpGetFileA(
  [in] HINTERNET hConnect,
  [in] LPCSTR    lpszRemoteFile,
  [in] LPCSTR    lpszNewFile,
  [in] BOOL      fFailIfExists,
  [in] DWORD     dwFlagsAndAttributes,
  [in] DWORD     dwFlags,
  [in] DWORD_PTR dwContext
);

参数

[in] hConnect

FTP 会话的句柄。

[in] lpszRemoteFile

指向以 null 结尾的字符串的指针,该字符串包含要检索的文件的名称。

[in] lpszNewFile

指向以 null 结尾的字符串的指针,该字符串包含要在本地系统上创建的文件的名称。

[in] fFailIfExists

指示如果指定名称的本地文件已存在,函数是否应继续。 如果 fFailIfExistsTRUE 且本地文件存在, 则 FtpGetFile 将失败。

[in] dwFlagsAndAttributes

新文件的文件属性。 此参数可以是 CreateFile 函数使用的 FILE_ATTRIBUTE_* 标志的任意组合。

[in] dwFlags

控制函数如何处理文件下载。 第一组标志值指示传输的发生条件。 这些传输类型标志可以与控制缓存的第二组标志结合使用。

应用程序可以选择其中一个传输类型值。

含义
FTP_TRANSFER_TYPE_ASCII
使用 FTP 的 ASCII (Type A) 传输方法传输文件。 控件和格式设置信息将转换为本地等效项。
FTP_TRANSFER_TYPE_BINARY
使用 FTP 的 Image (I 类型) 传输方法传输文件。 文件完全按照其存在进行传输,且不做任何更改。 这是默认传输方法。
FTP_TRANSFER_TYPE_UNKNOWN
默认为 FTP_TRANSFER_TYPE_BINARY。
INTERNET_FLAG_TRANSFER_ASCII
将文件作为 ASCII 传输。
INTERNET_FLAG_TRANSFER_BINARY
将文件作为二进制文件传输。
 

以下标志确定如何缓存此文件。 以下标志的任意组合都可以与传输类型标志一起使用。

含义
INTERNET_FLAG_HYPERLINK
在确定是否从网络重新加载项时,如果没有 Expires 时间,也没有从服务器返回 LastModified 时间,则强制重新加载。
INTERNET_FLAG_NEED_FILE
如果无法缓存文件,则会导致创建临时文件。
INTERNET_FLAG_RELOAD
强制从源服务器下载请求的文件、对象或目录列表,而不是从缓存下载。
INTERNET_FLAG_RESYNCHRONIZE
如果资源自上次下载以来已修改,则重新加载 HTTP 资源。 将重新加载所有 FTP 资源。

Windows XP 和 Windows Server 2003 R2 及更早版本: Gopher 资源也会重新加载。

[in] dwContext

指向变量的指针,该变量包含将此搜索与任何应用程序数据关联的应用程序定义值。 仅当应用程序已调用 InternetSetStatusCallback 来设置状态回调函数时,才使用此方法。

返回值

如果成功,则返回 TRUE ,否则返回 FALSE 。 若要获取特定错误消息,请调用 GetLastError

注解

FtpGetFile 是一个高级例程,用于处理与从 FTP 服务器读取文件并将其存储在本地相关的所有簿记和开销。 只需检索文件数据或需要密切控制文件传输的应用程序应使用 FtpOpenFileInternetReadFile 函数。

如果 dwFlags 参数指定 FTP_TRANSFER_TYPE_ASCII,则文件数据的转换会将控件和格式字符转换为本地等效字符。 默认传输是二进制模式,其中文件以与服务器上存储格式相同的格式下载。

lpszRemoteFilelpszNewFile 可以是相对于当前目录的部分或完全限定的文件名。

与 WinINet API 的所有其他方面一样,无法从 DllMain 或全局对象的构造函数和析构函数中安全地调用此函数。

注意 WinINet 不支持服务器实现。 此外,不应从服务使用它。 对于服务器实现或服务,请使用 Microsoft Windows HTTP Services (WinHTTP)
 

注意

wininet.h 标头将 FtpGetFile 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 wininet.h
Library Wininet.lib
DLL Wininet.dll

另请参阅

FTP 会话

WinINet 函数