c++ - 使用 sftp_open() 在 C++ 中使用 SFTP libssh 将文件从本地复制到远程时,文件返回 NULL 值
问题描述
我已经使用 C++ 中的 SFTP SSH 连接到服务器,并且我已经将文件从远程复制到本地。现在我正在尝试从本地复制到远程,我从这里读到了这个,但它不起作用。我写了以下代码。
fr = fopen("C:/Users/Sami/Desktop/we/s.txt", "r");
fseek(fr, 0, SEEK_END);
lSize = ftell(fr);
rewind(fr);
char * buffer = (char*)malloc(sizeof(char)*lSize);
result = fread(buffer, 1, lSize, fr);
file = sftp_open(sftp, "/home/serversj/Desktop/sami/s.txt", O_CREAT, 1);
nwritten = sftp_write(file, buffer, result);
我使用'fopen'打开本地系统文件并将文件数据存储到缓冲区中,然后将缓冲区内容读取到结果中。在调试时,我可以看到 sftp_open 函数在“文件”中创建了一个 NULL 值,因此 sftp_write 显示错误“没有这样的文件”。我在窗户上工作。我得到错误在 sftp_open 中,我也尝试 了这个答案,但是在“sftp_open”中出现了问题。我不知道如何纠正这个..我陷入了困境。
错误是:'SFTP 服务器:权限被拒绝。'.. 并且 ssh_get 错误是'没有这样的文件'</p>
解决方案
您正在使用sftp_open(); 仅用于使用 access_type O_CREAT创建文件,您需要O_WRONLY将一些数据写入该文件。
fr = fopen("C:/Users/Sami/Desktop/we/s.txt", "r");
fseek(fr, 0, SEEK_END);
lSize = ftell(fr);
rewind(fr);
char * buffer = (char*)malloc(sizeof(char)*lSize);
result = fread(buffer, 1, lSize, fr);
int access_type = O_WRONLY | O_CREAT;
file = sftp_open(sftp, "/home/serversj/Desktop/sami/s.txt", access_type,S_IRWXU);
nwritten = sftp_write(file, buffer, result);
我希望这会奏效..
推荐阅读
- xamarin - 使用 xamarin 表单从列表视图中删除右滑动手势
- c++ - 无法使用 MinGW 5.3.0 构建 PSmove API,多个定义
- javascript - setHours() javascript 返回与预期不同的格式
- linux - bash命令查找具有相同名称但扩展名不同的文件
- r - quanteda:计算网络图中每个节点的边数
- javascript - 检查并转换电话号码
- ios - 如何在 Swift 中将 [AnyObject] 数组转换为 [Hashable] 或 [AnyHashable] 数组?
- prometheus - PromQL。如何添加来自不同指标的标签值
- php - 插入空数据Mysql的最佳方法是什么
- php - Laravel 多态关系同时存储数据