使用 Libssh 将文件从服务器复制到客户端:分配文件复制目标路径的问题

Copying a file from a server to client using Libssh: issues with assigning file copy destination path

我想将文件从服务器复制到客户端,我已经连接了服务器,我可以在服务器的特定文件中添加一些内容。我已经完成了 this tutorials and this ,因此我根据教程编写了一些代码。但它不工作。我知道在获取目标 path.while 调试时出现了一些错误,我得到了这个错误 抛出了未处理的异常:读取访问冲突。文件是 nullptr... 我发现“错误在 fd (sftp_file fd;) 中,我在我想要的位置分配了路径(客户端)"C:/Users/Sami/Desktop/"从“/home/server/Desktop/sa/wi.exe”这条路径(服务器)复制 wi.exe。' 我该如何更正这个?

access_type = O_RDONLY;
        file = sftp_open(sftp, "/home/server/Desktop/sa/wi.exe",access_type,0);
        fd = sftp_open(sftp,"C:/Users/Sami/Desktop/", O_CREAT, 0);
       nbytes = sftp_read(file, buffer, sizeof(buffer));
        nwritten = sftp_write(fd, buffer, nbytes);
    sftp_close(file);

您应该只对 远程 计算机上的文件使用 sftp_open、sftp_read 和 sftp_write。对于本地计算机上的文件,只需使用普通文件函数和 类(例如 fopen 或 fstream)。

例如

access_type = O_RDONLY;
file = sftp_open(sftp, "/home/server/Desktop/sa/wi.exe",access_type,0);
FILE* fd = fopen("C:/Users/Sami/Desktop/wi.exe", "w");
nbytes = sftp_read(file, buffer, sizeof(buffer));
nwritten = fwrite(buffer, sizeof(char), nbytes, fd);
sftp_close(file);
fclose(fd);

正如 πìντα ῥεῖ 评论的那样,您还错过了目标路径中的文件名。