Quando se pensa em download de arquivos, uma das primeiras situações que vêm à mente é a de um usuário clicando sobre um link, a fim de gerar uma cópia da página/arquivo escolhido em um diretório específico. Este tipo de procedimento acontece normalmente a partir de um browser, existindo inclusive a opção de se abrir o arquivo a partir deste aplicativo: em termos práticos, funcionalidades com esse comportamento partem do download com gravação em um diretório temporário, com o posterior carregamento do arquivo considerado a partir do browser em questão.
Embora a participação de um usuário acionando um link seja a forma mais comum de se realizar o download de um arquivo, podem existir casos em que uma aplicação precisará trabalhar com dados providos por uma fonte externa. Este tipo de demanda não envolve a intervenção direta de seres humanos, surgindo em decorrência de fatores como:
A fim de possibilitar o download de arquivos em rotinas internas de um sistema, a plataforma .NET disponibiliza a classe WebClient. Este tipo encontra-se definido no namespace System.Net, sendo que neste último existem outras classes dotadas de funcionalidades para a manipulação de recursos de rede.
Na Listagem 1 é apresentado um exemplo simples de utilização da classe WebClient. Basicamente, é criada uma nova instância deste tipo e acionado o método DownloadFile. Esta operação recebe como parâmetros duas strings: a URL do arquivo a ser baixado e o caminho de destino do mesmo.
Listagem 1: Utilizando o método DownloadFile da classe WebClient
// Obtendo URL do arquivo a ser baixado e caminho de destino
// do mesmo
string urlArquivo =
"//www.devmedia.com.br/imagens/portal2010/logo-devmedia.png";
string caminhoArquivo =
@"C:\Temp\Downloads\devmedia.png";
// Outras instruções de código...
// Efetuando o download
System.Net.WebClient client =
new System.Net.WebClient();
client.DownloadFile(urlArquivo, caminhoArquivo);
Se for passado ao método DownloadFile um valor nulo para a URL de origem, uma exceção do tipo ArgumentNullException será gerada. Já no caso da URL ser um endereço inválido, o nome do arquivo for uma string nula ou vazia, o caminho do arquivo não existir ou ainda, um erro acontecer durante o processo de download, será lançada uma exceção do tipo NotSupportedException.
Na Figura 1 é demonstrada como seria a execução do código de exemplo aqui detalhado. A partir da URL fornecida como parâmetro, foi gerada uma nova imagem de extensão .png no diretório C:\Temp\Downloads\.
Figura 1: Imagem gerada no diretório C:\Temp\Downloads\
Embora o conteúdo apresentado aqui seja bem simples, espero que o mesmo possa ser útil, auxiliando você em tarefas que envolvam a manipulação de arquivos em aplicações escritas a partir do .NET Framework. É isso aí, até uma próxima oportunidade!