mfc ftp上传、下载、删除文件夹
时间: 2023-10-09 20:04:42 浏览: 91
FTP文件上传、下载、删除
MFC 中提供了 CFtpConnection 和 CFtpFileFind 这两个类来实现 FTP 文件的上传、下载和删除。下面分别介绍这三个操作的实现方法。
1. FTP 文件上传
```cpp
BOOL UploadFolder(CFtpConnection& ftpConn, CString strLocalFolder, CString strRemoteFolder)
{
CString strFolderName = strLocalFolder.Right(strLocalFolder.GetLength() - strLocalFolder.ReverseFind('\\') - 1);
CString strRemotePath = strRemoteFolder + "/" + strFolderName;
// 创建远程目录
if (!ftpConn.CreateDirectory(strRemotePath))
{
return FALSE;
}
// 枚举本地目录下的文件和文件夹
CFileFind find;
CString strFile;
BOOL bFind = find.FindFile(strLocalFolder + "\\*.*");
while (bFind)
{
bFind = find.FindNextFile();
if (find.IsDots())
{
continue;
}
if (find.IsDirectory()) // 递归上传文件夹
{
if (!UploadFolder(ftpConn, find.GetFilePath(), strRemotePath))
{
return FALSE;
}
}
else // 上传文件
{
strFile = find.GetFileName();
if (!ftpConn.PutFile(find.GetFilePath(), strRemotePath + "/" + strFile))
{
return FALSE;
}
}
}
return TRUE;
}
```
2. FTP 文件下载
```cpp
BOOL DownloadFolder(CFtpConnection& ftpConn, CString strRemoteFolder, CString strLocalFolder)
{
CString strFolderName = strRemoteFolder.Right(strRemoteFolder.GetLength() - strRemoteFolder.ReverseFind('/') - 1);
CString strLocalPath = strLocalFolder + "\\" + strFolderName;
// 创建本地目录
if (!CreateDirectory(strLocalPath, NULL))
{
DWORD dwError = GetLastError();
if (dwError != ERROR_ALREADY_EXISTS)
{
return FALSE;
}
}
// 枚举远程目录下的文件和文件夹
CFtpFileFind find(ftpConn);
BOOL bFind = find.FindFile(strRemoteFolder + "/*.*");
while (bFind)
{
bFind = find.FindNextFile();
if (find.IsDots())
{
continue;
}
if (find.IsDirectory()) // 递归下载文件夹
{
if (!DownloadFolder(ftpConn, find.GetFilePath(), strLocalPath))
{
return FALSE;
}
}
else // 下载文件
{
CString strFile = find.GetFileName();
if (!ftpConn.GetFile(find.GetFilePath(), strLocalPath + "\\" + strFile))
{
return FALSE;
}
}
}
return TRUE;
}
```
3. FTP 文件删除
```cpp
BOOL DeleteFolder(CFtpConnection& ftpConn, CString strRemoteFolder)
{
// 枚举远程目录下的文件和文件夹
CFtpFileFind find(ftpConn);
BOOL bFind = find.FindFile(strRemoteFolder + "/*.*");
while (bFind)
{
bFind = find.FindNextFile();
if (find.IsDots())
{
continue;
}
if (find.IsDirectory()) // 递归删除文件夹
{
if (!DeleteFolder(ftpConn, find.GetFilePath()))
{
return FALSE;
}
}
else // 删除文件
{
if (!ftpConn.DeleteFile(find.GetFilePath()))
{
return FALSE;
}
}
}
// 删除远程目录
if (!ftpConn.RemoveDirectory(strRemoteFolder))
{
return FALSE;
}
return TRUE;
}
```
以上是使用 MFC 实现 FTP 文件上传、下载和删除文件夹的代码,可以根据需要进行调整。其中 CFtpConnection 和 CFtpFileFind 的使用方法可以参考 MFC 的官方文档。
阅读全文