Depende do protocolo que você está usando para transferir arquivos. Geralmente isso já é feito de forma transparente.
O protocolo HTTP (e HTTPS) suporta a compressão imediata, desde que o servidor e o cliente a implementem. Primeiro de tudo, o cliente permitirá que o servidor saiba qual tipo de compactação ele suporta. O cabeçalho de solicitação HTTP típico inclui uma linha como
Accept-Encoding: gzip, deflate
O servidor selecionará um algoritmo de compactação suportado, indicará no cabeçalho HTTP (como abaixo) e servirá o conteúdo compactado.
Content-Encoding: gzip
A maioria dos clientes HTTP modernos (como Chrome, Firefox, Internet Explorer, Safari, etc, em ordem alfabética) e servidores (como Apache, Microsoft IIS, nginx) quando configurados corretamente, estão transferindo dados compactados imediatamente.
Similarmente, outros protocolos podem implementar a compressão, por ex. Modo Z no FTP. Protocolos especializados, como a Compactação Diferencial Remota da Microsoft, permitem a sincronização de arquivos locais e remotos transferindo apenas a parte diferente.
EDITAR:
Descobri que a compactação HTTP transparente é apenas para download de arquivos, mas não o contrário. Se você deseja compactar dados para upload, talvez seja necessário escrever um pouco de Javascript e usar FileReader
e a biblioteca de compactação como compressjs
.