It may well use 32KB buffers, or any size, but that doesn’t translate to “reading 32KB at a time”.
If you’re aborting specifically an io.Copy, then there are better ways to do that: abort in the write path rather than the read path.
It’s not my job to provide you with alternative code. That’s your job.