no, non prima del ciclo, ma dopo che acquisisci gli headers dalla richiesta

il fatto che tu riceva caratteri binari è normale, è dovuto proprio al fatto che non mandi nessun header

cmq è una cosa che ho fatto in svariate occasioni e quella di su è sicuramente la strada migliore, perché:
- non c'è un limite alla dimensione del file
- occupa sempre una quantità ridottissima di memoria
- il buffer si può regolare per ottenere performance migliori