Копирование файла с сервера на клиент с использованием Libssh: проблемы с назначением пути назначения для копирования файла - PullRequest
0 голосов
/ 15 сентября 2018

Я хочу скопировать файл с сервера на клиент, я уже подключил сервер и могу добавить некоторое содержимое в определенный файл на сервере.Я прошел этот урок и этот , поэтому я написал несколько кодов, основанных на этих уроках.но это не работает.Я знал, что при получении пути назначения произошла какая-то ошибка. Во время отладки я получил эту ошибку Произошло необработанное исключение: нарушение прав чтения.файл был nullptr ... и я нашел ' Ошибка в fd (sftp_file fd;), я назначил путь (клиент) "C: / Users / Sami / Desktop /", куда я хочу скопироватьwi.exe из «/home/server/Desktop/sa/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);

1 Ответ

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

Вы должны использовать sftp_open, sftp_read и sftp_write только для файлов, которые находятся на удаленном компьютере. Для файлов на локальном компьютере просто используйте обычные файловые функции и классы (например, fopen или fstream).

* 1005 Е.Г. *

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);

Также вы пропустили имя файла в пути назначения, как прокомментировал πάντα ῥεῖ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...