del lado del cliente el archivo podes mandarlo de la siguiente manera:
abris el archivo como lectura, y lees y envias byte por byte o como mas te parezca, (aunque para mi la mejor es byte por byte) y del lado de servidor tiene que saber que es un archivo y prepararse creando localmente un archivo con el nombre del que envia el cliente y recibiendo y escribiendo byte por byte en el. No hay funciones que te dejen mandar archivos asi de una como vos decis.. pero obviamente la podes crear vos.
Pensa que el servidor tiene que saber que es un archivo y el nombre , y el tamaño asi que tendrias antes que mandar algunae specie de header con esa informacion antes de empezar a mandar el archivo mismo, para control de errores, no?
Bueno espero haber servido de algo. Suerte. Bye.