This part doesn't look right:
Dim bytesRead As Integer = oFileStream.Read(buffer, 0, buffer.Length)
While bytesRead <> 0
bytesRead = oFileStream.Read(buffer, 0, buffer.Length)
oRequestStream.Write(buffer, 0, bytesRead)
End While
Note that Dim bytesRead As Integer = oFileStream.Read(buffer, 0, buffer.Length)
does an initial read, but it gets immediately overwritten within your loop. Therefore you are writing one less block to the oRequestStream
than you read.