File возвращает значение NULL при использовании sftp_open () для копирования файла с локального на удаленный с использованием SFTP libssh в C ++ - PullRequest
0 голосов
/ 18 сентября 2018

Я подключился к серверу, используя SFTP SSH в c ++, и я уже скопировал файлы с на локальный .Теперь я пытаюсь скопировать с локальный на удаленный , я читал об этом с это , но это не работает.Я написал следующий код.

 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: «Нет такого файла»

1 Ответ

0 голосов
/ 19 сентября 2018

Вы использовали 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);

Надеюсь, это сработает ..

...