ZH ·
🌏 English

使用 POCO 库进行 FTP 操作

POCO 简介

POCO 是一个为 C++ 开发者设计的轻量级且灵活的网络库。 您可以通过其官方网站 https://pocoproject.org/ 或 GitHub 仓库 https://github.com/pocoproject/poco 了解更多信息。 您可以直接从 POCO 仓库克隆代码,并按照官方手册进行构建。对于 Windows 用户,我建议使用 CMake-GUI 工具,采用默认设置即可轻松完成构建。

如何上传文件

引入头文件

大多数 FTP 相关的 API 都位于 Poco/Net/FTPClientSession.h 头文件中。由于异常处理在开发中必不可少,我们也需要包含相关的头文件。此外,执行 FTP 上传操作时,必须引入 Poco/StreamCopier.h

#include "Poco/Net/FTPClientSession.h"
#include "Poco/Net/NetException.h"
#include "Poco/StreamCopier.h"

StreamCopier 依赖于标准流,因此我们也需要包含它们。

#include <iostream>
#include <fstream>

创建会话对象

auto* ftp = new Poco::Net::FTPClientSession("192.168.1.3", 21, "username", "password");

执行上传

try{
    std::ostream &ftpOStream = ftp->beginUpload("target_file_name.png");
    std::ifstream localIFStream("/path/to/local_file.png", std::ifstream::in | std::ifstream::binary);
    auto numBytes = Poco::StreamCopier::copyStream(localIFStream, ftpOStream);
    ftp->endUpload();
}
catch( Poco::Net::FTPException& e)
{
    std::cerr<<e.what()<<e.message()<<std::endl;
}