2012-01-02 22 views
2

Qtを使用してファイルアップローダを開発しようとしています。私のコードは以下の通りです:Qtアプリケーションを使用してサーバーに600mb以上のファイルをアップロードしようとしています

QNetworkAccessManager * manager = new QNetworkAccessManager(this); 
    QNetworkRequest request(url); 
    QByteArray line; 
    QFile file(//path); 
    while(!file.atEnd()) 
    { 
     line.append(file.readLine()); 
    } 
    file.close(); 

    QObject::connect(manager,SIGNAL(finished(QNetworkReply *)), this, SLOT(error_On_File_Send(QNetworkReply *))); 
    manager->post(request, line); 

小さいファイルではうまくいきます。しかし、それは大きなファイルでは動作しませんし、std:bad_allocエラーを出します。どうすればいいですか

+0

送信する前にファイル全体を読み取ろうとしないでください。 –

答えて

3

QNetworkAccessManager::post (const QNetworkRequest & request, QIODevice * data)を使用してください。 QIODeviceから必要なときに自動的にデータを読み込みます。 QFileはQIODeviceなので、コードを少しだけ変更する必要があります。添付のQIODeviceを自分で管理する必要があります(finished()シグナルの後に削除してください)

+0

あなたの答えに感謝します。最後にそれを得た – zi0408

関連する問題