这顿不吃行不行 2024-04-23 10:32 采纳率: 0%
浏览 5

ftp客户端文件上传失败

环境是Centos7
c++的ftplib库写ftp客户端,现在的情况是从指定目录拿文件没问题;
但是想实现文件主动上传到指定目录,Put()函数返回值为1,表明Put()执行成功,但是文件没有上传成功,请给出实例代码

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-23 10:32
    关注

    引自免费微信小程序:皆我百晓生

    在处理FTP上传问题时,确保以下几个关键点:

    1. FTP服务器已正确配置并允许上传。
    2. 使用正确的用户名、密码和端口连接FTP服务器。
    3. 检查文件路径是否正确且具有写入权限。
    4. 确保FTP库版本与C++代码兼容。

    下面是一个基于ftplib库的C++ FTP客户端示例,用于从本地文件系统上传文件到FTP服务器。这个例子假设您已经包含了必要的头文件,并且已经成功地连接到了FTP服务器(例如通过void ftp_login(const char* user, const char* pass)函数)。

    #include <ftplib.h>
    #include <fstream>
    
    // FTP登录函数,这里假设已经实现
    void ftp_login(const char* user, const char* pass) {
        // ...
    }
    
    // 上传文件到FTP服务器
    bool upload_file_to_ftp(const std::string& local_file_path, const std::string& remote_directory, const std::string& remote_file_name) {
        FTP ftp;
        if (!ftp.connect("your_ftp_server_ip_or_domain")) {
            std::cerr << "Failed to connect to FTP server" << std::endl;
            return false;
        }
    
        if (!ftp.login(user, pass)) {
            std::cerr << "Failed to login to FTP server" << std::endl;
            ftp.disconnect();
            return false;
        }
    
        if (!ftp.cwd(remote_directory.c_str())) {
            std::cerr << "Failed to change directory on FTP server" << std::endl;
            ftp.logout();
            ftp.disconnect();
            return false;
        }
    
        std::ifstream file(local_file_path, std::ios::binary);
        if (!file.is_open()) {
            std::cerr << "Failed to open local file: " << local_file_path << std::endl;
            ftp.logout();
            ftp.disconnect();
            return false;
        }
    
        Ftp_status status = ftp.put(file.rdbuf(), remote_file_name.c_str());
        file.close();
    
        if (status == Ftp_status::ok) {
            std::cout << "File uploaded successfully" << std::endl;
            ftp.logout();
            ftp.disconnect();
            return true;
        } else {
            std::cerr << "Failed to upload file: " << ftp.error_string().c_str() << std::endl;
            ftp.logout();
            ftp.disconnect();
            return false;
        }
    }
    

    请将上述代码中的"your_ftp_server_ip_or_domain"userpass 替换为实际的FTP服务器地址、用户名和密码。同时,请确保提供的本地文件路径和远程文件名有效。

    如果问题仍然存在,请检查您的FTP服务器日志,看看是否有任何错误消息。另外,确认文件权限和网络连接也是很重要的步骤。如果问题依然无法解决,请提供更详细的错误信息,以便更好地协助您。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月23日

悬赏问题

  • ¥15 程序实在不会写,要秃了
  • ¥15 pycharm导入不了自己的包
  • ¥15 C#.net通过内网url地址获取文件并下载问题,浏览器postman可以正常下载,用程序不行
  • ¥15 本人本科机械,目前研一。没有深度学习基础,目前对研究生课题一片迷茫,请教各位!
  • ¥15 关于R语言单因素与多因素线性回归的平均值
  • ¥15 服务器清除BIOS之后引导不了
  • ¥15 CPLEX用OPL编写的混合整数线性优化问题。
  • ¥15 可以用EasyConnect连接实验室内网,但无法连接内网才能访问的服务器,为什么?
  • ¥15 前端预览docx文件,文件从后端传送过来。
  • ¥15 层次聚类和蛋白质相似度