0

我正在尝试将文件上传到 FTP 服务器,这是由 vsftpd 创建的本地服务器。我在 vsftpd.conf 文件中设置了连接和传输文件所需的必要参数。我的要求是将文件上传到此服务器。当我记录 statechanged 消息时,我的 ftp 对象会发出 HostLookup、Connecting、Connected、Logged in、关闭和 Unconnected 消息。但是,当我检查目标目录时,文件在那里,但大小为 0...可能有什么问题?以下是我使用的代码...

QImage img("./Sample.jpg");
QBuffer* buf = new QBuffer();
buf->open(QBuffer::ReadWrite);
buf->seek(0);
img.save(buf, "jpg");
connection = new QFtp();
connection->connectToHost("localhost");
connection->login();
connection->cd("ftpshare/");
connection->put(buf, "Sample.jpg", QFtp::Binary);
qDebug(QString::number(connection->error()).toLatin1());
qDebug(connection->errorString().toLatin1());
connect(connection,SIGNAL(stateChanged(int)),this,SLOT(ftpstatechanged(int)));
connection->close();
4

2 回答 2

0

您确定第一行在Sample.jpg它正在查找的文件夹中找到了吗?也许工作目录不是你想象的那样。否则这应该工作得很好。

于 2012-04-27T09:15:27.257 回答
0

问题在于缓冲区的使用。当我改用 QByteArray 时,它得到了解决。

QImage img("./Sample.png");
QByteArray ba;
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
img.save(&buffer, "PNG");
connection = new QFtp();
connection->connectToHost("localhost");
connection->login();
connection->cd("ftpshare/");
connection->put(ba, "Sample.png", QFtp::Binary);
于 2012-05-04T10:03:29.397 回答