Как предотвратить QNetworkAccessManager от буферизации содержимого POST из QIODevice?

Я не уверен, что необходимая мне функциональность не является чем-то, на что Qt просто не способен, но кажется, что, поскольку существует множество допустимых вариантов использования, возможно, я делаю что-то не так, и кто-то уже имел дело с этим.

То, что я хочу сделать, довольно просто — я хочу выпустить POST-запрос с заданной длиной содержимого и предоставить фактическое содержимое POST на лету из QIODevice, QNetworkAccessManager есть метод QNetworkReply * QNetworkAccessManager::post(const QNetworkRequest & request, QIODevice * data) который кажется идеальным для этого. Длина содержимого велика (допустим, 8 ГБ), и кажется, что Qt пытается вызвать QIODevice::readData получить все данные до того, как что-либо будет отправлено в сеть (по крайней мере, Wireshark ничего не показывает, тогда как установка небольшой длины контента, например, 4, приводит к тому, что 4 байта считываются и все передается). Это привело меня к мысли, что Qt действительно хочет буферизовать весь контент POST. Я явно установил QNetworkRequest::DoNotBufferUploadDataAttribute атрибут, но это не меняет этого.

Может случиться так, что это на самом деле работает так, и я ничего не могу с этим поделать, но в таком случае, как будет работать огромная загрузка файлов, которые просто не помещаются в памяти? В любом случае, любые отзывы от людей, столкнувшихся с той же проблемой, приветствуются, пока я отлаживаю, чтобы посмотреть, действительно ли Qt буферизирует все это.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]