0

Qt でクライアント FTP を開発しようとしています。サーバーにファイルをダウンロードしようとすると問題が発生します。

readyRead() シグナルに対応するスロットには、readAll() メソッドを生成する QByteArray があります。ファイルが 3 ~ 4 kB 未満の場合は問題ありません。それ以外の場合、結果は完全ではありません (ファイルの先頭しかありません)。

私はやろうとしました:

while(_ftp->bytesAvailable() > 0)
    QByteArray array = _ftp->readAll();

しかし、それも失敗します! 誰かがファイル全体を回復する方法を知っていますか?

4

1 に答える 1

1

のドキュメントからQFtp::readyRead:

このシグナルは、データが利用可能になったらすぐにチャンクで処理する場合に役立ちます。完全なデータのみに関心がある場合は、代わりに commandFinished() シグナルに接続してデータを読み取ってください。

commandFinishedそのため、シグナルに接続しreadAllてスロットで使用する必要があります。

于 2013-07-13T12:49:07.627 に答える