2012-01-02 25 views
2

我想開發使用Qt的文件上傳。這是我的代碼:試圖上傳超過600MB的文件到服務器使用Qt應用

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

在開始發送任何文件之前,請勿嘗試讀取整個文件。 – 2012-01-02 13:56:25

回答

3

使用QNetworkAccessManager::post (const QNetworkRequest & request, QIODevice * data)。它將自動從任何QIODevice中讀取數據。 QFile是QIODevice,所以你只應該稍微改變你的代碼。請注意,您必須自己管理附加的QIODevice(在finished()信號後將其刪除)

+0

感謝您的回答。終於明白了 – zi0408 2012-01-04 15:07:37

相關問題