我在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;
}
有人可以告诉我我做错了吗?