void QNetworkAccessFileBackend::upstreamReadyRead() { Q_ASSERT_X(operation() == QNetworkAccessManager::PutOperation, "QNetworkAccessFileBackend", "We're being told to upload data but operation isn't PUT!"); // there's more data to be written to the file while (upstreamBytesAvailable()) { // write everything and let QFile handle it int written = file.write(readUpstream()); if (written < 0) { // write error! QString msg = QCoreApplication::translate("QNetworkAccessFileBackend", "Write error writing to %1: %2") .arg(url().toString(), file.errorString()); error(QNetworkReply::ProtocolFailure, msg); finished(); return; } // successful write file.flush(); upstreamBytesConsumed(written); } }
QByteArray QNetworkAccessBackend::readUpstream() { // ### this is expensive. Consider making QRingBuffer::peekAll keep the buffer it returns return reply->writeBuffer.peek(upstreamBytesAvailable()); }