MFC 类 FtpConnection

 

MFC 类 FtpConnection 管理与 Internet 服务器的 FTP 连接并允许直接操纵服务器中的目录和文件。FTP 是由 MFC WinInet 类识别的三种Internet服务器之一。

为了与 FTP Internet 服务器通讯,必须先创建一个 CInternetSession 实例,然后创建 CFtpConnection 对象。创建 CFtpConnection 对象不采用直接方式,而是调用 CInternetSession::GetFtpConnertion 来创建并返回一个指向它的指针。要了解CInternetSession 与其它MFC Internet 类共同工作的情况,可参阅联机文档“Visual C++程序员指南”中的“用 WinInet 编写 Internet程序” 。要了解它与其它两种支持服务 HTTP 和Gopher 服务器的通讯,请参阅CHttpConnection和CGopherConnection类。

#include<afxinet.h>

CFtpConnection类的成员

构造函数

CFtpConnection 构造一个CFtpConnection对象

操作

SetCurrentDirectory 设置当前FTP目录

GetCurrentDirectory 获取此次连接的当前目录

GetCurrentDirectoryAsURL获取作为URL的此次连接的当前目录

RemoveDirectory 从服务器移去指定目录

CreateDirectory 在服务器上构造一个目录

Rename 将服务器上的文件改名

Remove 从服务器上移去一个文件

PutFile 将一个文件放到服务器上

GetFile 从连接的服务器上获取一个文件

OpenFile 在连接的服务器上打开一个文件

Close 关闭与服务器的连接

请参阅  CInternetConnection

成员函数

CFtpConnection::CFtpConnection

CFtpConnection( );

说明

构造一个 CFtpConnection 对象。不可直接构造一个 CFtpConnection 对

象,而是调用CInternetSession::GetFtpConnection 来创建。

请参阅 CInternetSession::GetFtpConnection,CFtpFileFind,CGopherConnection,CHttpConnection,CInternetConnection

CFtpConnection::Close

virtual void Close( );

说明

关闭与服务器的连接,连接会由 CFtpConnection 对象的析构程序所关

闭,但你必须显式关闭连接而避免诊断信息。

请参阅  CFtpFileFind,CGopherConnection,CHttpConnection,CInternetConnection

CFtpConnection::CreateDirectory

BOOL CreateDirectory(LPCTSTR pstrDirName);

返回值

如果成功,则返回非零值,否则为 0。在调用失败时,调用 Windows函数GetLastError来判断错误原因。

参数

pstrDirName

指向包含将创建的目录名的字符串。

说明

调用此成员函数在连接服务器上创建一个目录。

使用 GetCurrentDirectory 来判断当前与服务器连接的工作目录,不要假设远程系统把你与根目录相连接。

pstrDirName 可为部分或完整的与当前目录相关的可用文件名。目录分隔可以使用反斜线(\)和斜线(/) 。使用之前,CreateDirectory 将目录名分隔符转化为恰当的字符。

请参阅  CInternetConnection

CFtpConnection::GetCurrentDirectory

BOOL GetCurrentDirectory(CString&strDirName)const;

BOOL GetCurrentDirectory(LPTSTR  pstrDirName,LPDWORD lpdwLen)const;

返回值

如果成功,则返回非零值,否则为 0。如果失败,则调用 Win32 函数GetLastError判断出错原因。

参数

strDirName 接收目录名的字符串参考。

pstrDirName 接收目录名的字符串指针。

lpdwLen 指向一个DWORD,此双字包含下列信息:

入口处 pstrDirName 指向的缓冲区大小

返回时 存放在 pstrDirName 中的字符数。如果成员函数失败并返回 ERROR_INSUFFICIENT_BUFFER,则lpdwLen 包含应用必须为接收字符串分配的字节数

说明

调用此成员函数获取当前目录名。要获取一个作为 URL 的目录名,

可调用GetCurrentDirectoryAsURL。

参数 pstrDirName 或 strDirName 可为部分或完整的当前目录的可用文

件名。目录分隔符可以使用及斜线(\)和斜线(/) ,使用之前,

CreateDirectory将目录名分隔符转化为适当的字符。

请参阅  CFtpConnection::GetCurrentDirectoryAsURL,

CInternetConnection

CFtpConnection::GetCurrentDirectoryAsURL

BOOL GetCurrentDirectoryAsURL(CString&strDirName)const;

BOOL GetCurrentDirectoryAsURL(LPCTSTR  pstrDirName,LPDWORD lpdwLen)const;

返回值

如果成功,则返回非零值,否则为 0。如果失败,则调用 Win32 函数GetLastError返回出错原因。

参数

strDirName接收目录名的字符串参考。

pstrDirName指向接收目录名的字符串的指针。

lpdwLen指向DWORD,此双字节包含以下的更多信息。

入口处 pstrDirName 指向的缓冲区大小。

返回时 存放在 pstrDirName 中的字符数。如果成员函数失败并返回ERROR_INSUFFICIENT_BUFFER, 则lpdwLen包含应用必须为接收字符串分配的字节数。

说明

调用此成员函数获取一个作为 URL 的当前目录名,

GetCurrentDirectoryAsURL与GetCurrentDirectory功能相同。参数 strDirName 可为部分或完整的与当前目录相关的可用文件名。目录分隔符可为反斜线( \ )和斜线( / ),使用之前,GetCurrentDirectoryAsURL将目录名分隔符转化为适当的字符。

请参阅  CFtpConnection::GetCurrentDirectory,CInternetConnection

CFtpConnection::GetFile

BOOL GetFile(LPCTSTR pstrRemoteFile, LPCTSTR pstrLocalFile, BOOL  bFailIfExists = TRUE,DWORD  dwAttributes =FILE_ATTRIBUTE_NORMAL,DWORD  dwFlags = FTP_TRANSFER_TYPE_BINARY,DWORD dwContext = 1);

返回值

如果成功,则返回非零值,否则为 0。如果失败,则调用 Win32 函数GetLastError返回出错原因。

参数

pstrRemoteFile 指向以空终止符结束的字符串,包含从 FTP 服务器获取的文件名。

pstrLocalFile 指向以空终止符结束的字符串,包含在本地系统创建的文件名。

bFailIfExists 说明文件名是否被已存在的文件使用。如果本地文件名已存在并且参数为 TRUE,则 GetFile 失败。否则 GetFile 会删除已存在的文件的拷贝。

dwAttributes指定文件属性,可为以下FILE_ATTRIBUTE_* 标记的组合:

FILE_ATTRIBUTE_ARCHIVE   文件为档案文件。应用使用此属性标明文件可以备份和移动。

FILE_ATTRIBUTE_COMPRESSED   文件或目录为压缩。对文件来说,表明文件中的所有数据都是压缩的;如果为目录,表示新建文件和子目录缺省为压缩的。

FILE_ATTRIBUTE_ DIRECTORY   文件为目录。

FILE_ATTRIBUTE_ NORMAL   文件没有其它属性设置,此属性仅可单独使用,任何其它属性覆盖此属性。

FILE_ATTRIBUTE_ HIDDEN   文件隐藏,不包含在通常的目录列表。

FILE_ATTRIBUTE_ READONLY  文件只读,应用可读出文件但不可写、删文件。

FILE_ATTRIBUTE_ SYSTEM   文件是操作系统的一部分或为操作系统专用。

FILE_ATTRIBUTE_TEMPORARY   文件用于临时存储。只有在完全必要时应用才写文件,大多数文件数据存储于存储区而不存入介质,因为文件将很快被删除。

dwFlags 指定传输发生的条件,此参数可以为联机文档“平台 SDK 在线”中的FtpGetFile中描述的任何dwFlags 值。

dwContext

表示获取文件的上下文标识符,请参阅说明,了解有关 dwContext的更多信息。

说明

调用此成员函数从FTP 服务器中获得一个文件并把它存到本地机器。GetFile 是一个高级例程,处理所有从 FTP 服务器读文件存入本地相关的操作。应用如果只想获取文件数据或在文件传输中加强控制,则应使用OpenFile和CInternetFile::Read。如果 dwFlags 是 FILE_TRANSFER_TYPE_ASCII,文件数据翻译器将控件和格式化字符转换到 Windows 中。缺省转换为二进制,下载文件与服务器上的存储方式一样。pstrRemoteFile 和 pstrLocalFile 可为与当前目录相关的部分或全部可用文件名。文件名分隔符可为反斜线(\)或斜线(/) ,使用之前 GetFile把它转化为适当的字符。覆盖缺省的 dwContext 可设置选择值。此上下文标识符与由CInternetSession 对象创建的 CFtpConnection 对象的指定操作相关联,值返回给 Cinternet-Session::OnStatusCallback,提供被标识的操作状态。要了解更多信息,可参阅联机文档“Visual C++程序员指南”中的“Internet初步:WinInet” 。请参阅  CInternetConnection

CFtpConnection::OpenFile

CInternetFile* OpenFile(LPCTSTR  pstrFileName,DWORD dwAccess=GENERIC_READ,      DWORDdwFlags=FTP_TRANSFER_TYPE_BINARY,DWORD  dwContext=1);

返回值

指向CInternet对象的指针。

参数

pstrFileName 包含要打开文件的文件名的字符串指针。

dwAccess 判断文件的访问方式。可以为 GENERIC_READ 或GENERIC_WRITE,但不能同时使用。

dwFlags指定连续转化发生的条件,可为以下FTP_TRANSFER_*  常数:

FTP_TRANSFER_TYPE_ASCII  文件转换采用FTP ASCII(类型A)转换方法,将控件和格式化信息转化为本地等同信息。

FTP_TRANSFER_TYPE_BINARY   文件数据转换采用 FTP 的图象(类型 I)转换方式,文件数据不加转变地以存在方式转换,这是缺省的方法。

dwContext 打开文件的上下文标识符。请参阅说明,了解有关 dwContext 的更多信息。

说明

调用此成员函数打开一个 FTP 服务器上的文件供读或写。OpenFile 可在下列情况下使用:

一个应用需要在 FTP 服务器上发送或创建的文件数据,但数据不在一个本地文件中。当 OpenFile 打开一个文件时,应用使用CInternetFile::Write将FTP 文件数据发送给服务器。

一个应用必须从服务器上获取一个文件并放到应用控制的存储区而不是写到磁盘。当用 OpenFile 打开文件后,应用使用CInternetFile::Read。

一个应用需要一个文件转换高级控件,例如,应用可能显示一个进程控件,表示下载文件的文件转换进程的状态。

调用OpenFile后到调用Close之前, 应用只可调用CInternetFile::ReadCInternetFile::Write 或 CFtpFileFind::FindFile。在同样的 FTP 会话中调用其它 FTP 函数会失败,并将出错代码设置到FTP_ETRANSFER_IN_PROGRESS。

pstrFileName 参数与当前目录相关的部分或全部可用文件名,文件名分隔符可为反斜线(\)或斜线(/) ,使用之前 OpenFile 把它转化为适当的字符。

覆盖缺省的 dwContext,设置选择值的标识符。此标识符与由CInternetSession 对象创建的 CFtpConnection 对象的指定操作相关联值返回到 Cinternet-Session::OnStatusCallback,以提供标识的操作的状态。 要了解有关上下文标识符的更多信息, 可参阅联机文档 “Visual C++程序员指南”中的“Internet初步:WinInet” 。

请参阅  CInternetConnection,CFtpConnection::GetFile,CGopherConnection::OpenFile,CInternetFile::Write,CInternetFile::

Read

CFtpConnection::PutFile

BOOL PutFile(LPCTSTR pstrLocalFile,LPCTSTR pstrRemoteFile,DWORD  dwFlags=FTP_TRANSFER_TYPE_BINARY,DWORDdwContext=1);

返回值

如果成功,则返回非零值,否则为 0。如果失败,则调用 Win32 函数GetLastError返回出错原因。

参数

pstrLocalFile指向包含从本地系统发送的文件名字符串。

pstrRemoteFile指向将在FTP服务器上创建的文件的文件名字符串。

dwFlags指定转换文件发生时的条件,可为 OpenFile 中描述的常数FTP_TRANSFER_*的任意项。

dwContext放置文件的上下文标识符,请参阅说明,了解有关 dwContext 的更多信息。

说明

调用此成员函数在FTP 服务器上存放一个文件。

PutFile 是一个高级例程,处理所有在一个 FTP 服务器上存放文件的相关操作。如果应用仅发送数据或在文件转换中需要加强控制,应使用OpenFile和CInternetFile::Write。

覆盖缺省的 dwContext,设置选择值的标识符。此标识符与由CInternetSession 对象创建的 CFtpConnection 对象的指定操作相关联,值返回到 Cinternet-Session::OnStatusCallback,以提供标识的操作的状态。 要了解有关上下文标识符的更多信息, 可参阅联机文档 “Visual C++程序员指南”中的“Internet初步:WinInet” 。

请参阅  CInternetSession

CFtpConnection::Remove

BOOL Remove(LPCTSTR pstrFileName);

返回值

如果成功,则返回非零值,否则为 0。如果失败,则调用 Win32 函数

GetLastError返回出错原因。

参数

pstrFileName

指向包含移去的文件名的字符串指针。

说明

调用此成员函数从连接的服务器上删除指定文件。

pstrFileName 可为与当前目录有关的部分或全部可用文件名,目录分隔符可为反斜线(\)或斜线(/) ,使用之前,Remove 函数把它转化为适当的字符。

请参阅  CInternetConnectionCFtpConnection::RemoveDirectory

BOOL RemoveDirectory(LPCTSTR pstrDirName);

返回值

如果成功,则返回非零值,否则为 0。如果失败,则调用 Win32 函数GetLastError返回出错原因。

参数

pstrDirName将被移去的目录的字符串指针。

说明

调用此成员函数从连接的服务器移去指定目录。

用 GetCurrentDirectory 判断服务器当前工作目录,不要假设远程系统将你与根目录相连接。

pstrDirName 可为与当前目录相关的部分或全部可用文件名,目录分隔符可为反斜线(\)或斜线(/) ,使用前,RemoveDirectory 把它转化为适当的字符。

请参阅  CInternetConnection

CFtpConnection::Rename

BOOL Rename(LPCTSTR pstrExisting,LPCTSTR pstrNew);

返回值

如果成功,则返回非零值,否则为 0。如果失败,则调用 Win32 函数GetLastError返回出错原因。

参数

pstrExisting指向将被改名的文件名字符串。

pstrNew指向新文件名字符串。

说明

调用此成员函数改变连接的服务器中指定的文件名。

pstrDirName 与 pstrNew 参数可为与当前目录有关的部分或全部可用文件名,目录分隔符可为反斜线(\)或斜线(/) ,使用之前,Rename把它转化为适当的字符。

请参阅  CInternetConnection

CFtpConnection::SetCurrentDirectory

BOOL SetCurrentDirectory(LPCTSTR pstrDirName);

返回值

如果成功,则返回非零值,否则为 0。如果失败,则调用 Win32 函数GetLastError返回出错原因。

参数

pstrDirName指向目录名字符串。

说明

调用此成员函数改变FTP 服务器名。pstrDirName 参数可为与当前目录相关的部分或全部可用文件名,目录分隔符可为反斜线(\)或斜线(/) ,使用之前 SetCurrentDirectory

把它转化为适当的字符。用 GetCurrentDirectory 判断服务器的当前工作目录,不要假设远程系统将你与根目录相连接。

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值