试图上传超过600MB的文件到服务器使用Qt应用

问题描述:

我想开发使用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

使用QNetworkAccessManager::post (const QNetworkRequest & request, QIODevice * data)。它将自动从任何QIODevice中读取数据。 QFile是QIODevice,所以你只应该稍微改变你的代码。请注意,您必须自己管理附加的QIODevice(在finished()信号后将其删除)

+0

感谢您的回答。终于明白了 – zi0408 2012-01-04 15:07:37