QDataStream provides a Qt-specific serialization of binary data to a QIODevice, and is meant to be used on "both sides" of the streaming process (i.e. data serialized to a QIODevice using QDataStream is meant to be subsequently read back into a process using a QDataStream, preferably using the same version of the binary protocol). QDataStream therefore adds information to the streams it writes in order to provide versioning data, ensuring that future versions of QDataStream are backwards compatible, and that's why you're seeing extra data when you write the data to a file.
In your case, you'll want to drop the use of QDataStream because you're writing raw binary data to a file. This can be accomplished by removing the data stream class above, and replacing it with a direct call to the QIODevice's write method:
if (file->write(reply->readAll()) == -1) {
// some error occurred
}
You might also want to consider just leaving the file open instead of opening it each time you have data available. I have no hard numbers, but there is almost certainly undesired overhead opening it each time, especially when you know you'll be writing a lot of data to it.