我正在尝试将文件上传到FTP服务器,这是由vsftpd创建的本地服务器。我已经设置了在vsftpd.conf文件中连接和传输文件所需的必要参数。我的要求是将文件上传到此服务器。当我记录statechanged消息时,我的ftp对象发出了HostLookup,正在连接,已连接,登录,关闭和未连接的消息。但是当我在目的地目录中检查文件是否存在但是大小为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();
答案 0 :(得分:0)
您确定第一行在其正在查找的文件夹中找到Sample.jpg
吗?也许工作目录不是你想象的那样。否则这应该可以正常工作。
答案 1 :(得分: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);