O download de arquivos pode muitas vezes ser visto como tarefa simples : Basta fazer um link para o arquivo e ele é baixado pelo browser.
Mas essa simplicidade toda tem problemas : Primeiramente, o browser tenta fazer a interpretação do tipo que está sendo baixado e ao invés de salva-lo em disco abre diretamente para o usuário.
Outro problema é que não se tem controle de quantos downloads realmente foram realizados. Além disso o download só funciona se o arquivo estiver diretamente em uma pasta do site web, dificultando o controle do download, através de login, por exemplo.
Para contornar este problema podemos fazer o download via código. O processo é bem simples : Configuramos alguns headers para informar que é um download e desejamos que o browser salve o arquivo em seguida abrimos o arquivo e entregamos os bytes para o client.
É importante observar que o arquivo não precisa estar em um diretório que faça parte do site, consequentemente temos uma proteção maior do arquivo. Além disso a página que for realizar o download pode contabilizar o número de downloads e outros controles que se façam necessários.
Para utilizar esta sub basta chama-la em um ponto qualquer da página. Observe que a sub cancela tudo que já foi enviado ao client e envia o arquivo. Veja :
Esta dica foi produzida com o auxilio de Rodrigo Glauser, desenvolvedor .NET e esquiador das montanhas do chile.