Попытка загрузить файл размером более 600 Мб на сервер с помощью приложения Qt - PullRequest
2 голосов
/ 02 января 2012

Я пытаюсь разработать загрузчик файлов, используя 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. Что мне делать

1 Ответ

3 голосов
/ 03 января 2012

Используйте QNetworkAccessManager::post ( const QNetworkRequest & request, QIODevice * data ). Он будет автоматически читать данные, когда это необходимо из любого QIODevice. QFile - это QIODevice, поэтому вы должны лишь немного изменить свой код. Обратите внимание, что вы должны управлять подключенным QIODevice самостоятельно (удалить его после сигнала finished())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...