回 帖 发 新 帖 刷新版面

主题:vc实现ftp

本人最近在写一个ftp的工具想请教一下 
通过调用CFtpConnection类的getfile()函数来实现下载功能 但是怎样才能获得ftp上的文件名和怎样实现选择本地保存的路径 
getfile()函数的第二个参数是不是也是一个带路径的文件名?能用getpathname()得到吗?
所以我想请教一下 怎样获得ftp上的文件名和怎样实现从ftp上下载文件到本机.
希望有知道的朋友能帮忙看一下,先谢过了.

回复列表 (共3个回复)

沙发

自己找几个例子看看就能搞了!~

板凳


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”。

3 楼

谢谢了,不过怎样才能确定保存文件的路径呢?我还是很迷糊啊!

我来回复

您尚未登录,请登录后再回复。点此登录或注册