Libssh> SFTP子系统>将“大”文件写入服务器

时间:2018-07-10 12:47:03

标签: qt sftp libssh

我在Qt Quick应用程序中使用Libssh通过SFTP协议发送文件。 我写了一个可以发送文件的方法,但是如果文件大小大于1.5 Mo sftp_write函数从不返回,那么我在应用程序输出中就有这行

  

ssh_channel_read_timeout:缓冲读取(4):0个字节。窗口:   1280000

这是我的功能:

int sftp_sendFile(QString _dir,QString _name){

           QFile localfile(_dir);
           if (!localfile.open(QIODevice::ReadOnly)) {
              return 0;
           }

          QByteArray localFileContent = localfile.readAll();

           QString path = "/home/user/prg/"; // location on the server
           QString fileDir = path +_name;
           QByteArray fileDirBitArr = fileDir.toLatin1();

           int access_type = O_WRONLY | O_CREAT | O_TRUNC;
           sftp_file file;
           const char *fileContent = localFileContent.data();

           int length = strlen(fileContent);
           int rc, nwritten;

           file = sftp_open(sftp,fileDirBitArr.data(),access_type, S_IRWXU);
           /*can't open*/
           if (file == NULL)
           {
              return SSH_ERROR;
           }
           /*write*/
           nwritten = sftp_write(file, fileContent, length);

           /*write error*/
           if (nwritten != length)
           {
               sftp_close(file);
               return SSH_ERROR;
           }
           rc = sftp_close(file);
           if (rc != SSH_OK)
           {
             return rc;
           }
           return SSH_OK;
}

有人可以告诉我我做错了吗?

libssh:http://api.libssh.org/master/libssh_tutor_sftp.html

0 个答案:

没有答案