0

vsftpd によって作成されたローカル サーバーである FTP サーバーにファイルをアップロードしようとしています。vsftpd.conf ファイルにファイルの接続と転送に必要なパラメーターを設定しました。私の要件は、このサーバーにファイルをアップロードすることです。statechanged メッセージをログに記録すると、HostLookup、Connecting、Connected、Logged in、closed、および Unconnected のメッセージが ftp オブジェクトによって出力されました。しかし、宛先ディレクトリをチェックインすると、ファイルはそこにありますが、サイズは 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 に答える