试图上传超过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错误。我该怎么办
答
使用QNetworkAccessManager::post (const QNetworkRequest & request, QIODevice * data)
。它将自动从任何QIODevice中读取数据。 QFile是QIODevice,所以你只应该稍微改变你的代码。请注意,您必须自己管理附加的QIODevice(在finished()
信号后将其删除)
+0
感谢您的回答。终于明白了 – zi0408 2012-01-04 15:07:37
在开始发送任何文件之前,请勿尝试读取整个文件。 – 2012-01-02 13:56:25