MFC ftp DoPut 打开的文件
时间: 2023-10-12 07:24:57 浏览: 170
在 MFC 中使用 FTP 上传文件时,可以使用 `CFtpFileFind` 类来查找要上传的文件,并使用 `CFtpConnection` 类的 `PutFile` 或 `DoPutFile` 函数来上传文件。
如果要上传已经打开的文件,可以使用 `CFtpConnection` 类的 `DoPutFile` 函数,该函数可以接受一个文件句柄作为参数。以下是一个简单的示例代码:
```cpp
BOOL PutOpenedFile(CFtpConnection* pFtpConnection, LPCTSTR strSrcFile, LPCTSTR strDestFile)
{
CFile srcFile;
if (!srcFile.Open(strSrcFile, CFile::modeRead | CFile::shareDenyNone))
{
// 打开源文件失败
return FALSE;
}
HINTERNET hInternet = pFtpConnection->GetSessionHandle();
HINTERNET hFtpSession = pFtpConnection->GetHandle();
HINTERNET hFtpFile = ::FtpOpenFile(hFtpSession, strDestFile, GENERIC_WRITE, FTP_TRANSFER_TYPE_BINARY, 0);
if (!hFtpFile)
{
// 创建目标文件失败
return FALSE;
}
BOOL bSuccess = TRUE;
if (::InternetSetFilePointer(hFtpFile, 0, 0, FILE_BEGIN, 0) == INVALID_SET_FILE_POINTER)
{
// 设置文件指针失败
bSuccess = FALSE;
}
if (bSuccess && !pFtpConnection->DoPutFile(hFtpFile, CFile(srcFile).GetFileName(), FTP_TRANSFER_TYPE_BINARY))
{
// 上传文件失败
bSuccess = FALSE;
}
::InternetCloseHandle(hFtpFile);
srcFile.Close();
return bSuccess;
}
```
在这个示例中,我们首先打开源文件。然后,我们使用 `CFtpConnection::GetSessionHandle` 和 `CFtpConnection::GetHandle` 函数获取 FTP 会话和 FTP 连接的句柄。接下来,我们使用 `FtpOpenFile` 函数打开要上传的文件,并使用 `InternetSetFilePointer` 函数将文件指针设置为文件开头。最后,我们使用 `CFtpConnection::DoPutFile` 函数上传文件,并关闭 FTP 文件和源文件。
请注意,此示例中的代码没有进行错误处理。如果你想要在实际使用中使用这段代码,你需要添加更多的错误检查和错误处理代码。
阅读全文