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 necessidade de importar imagens ou informações de preços e detalhes técnicos que se encontram em arquivos gerados por fornecedores de um conjunto de produtos;
  • Processos automatizados de atualização de uma aplicação podem exigir a obtenção de arquivos que se encontram numa rede ou na Internet, forçando desse modo o download dos itens requeridos para a execução de procedimentos de upgrade;
  • Demandas como o processamento de informações fiscais, financeiras (atividades de integração com instituições bancárias, por exemplo), de folha de pagamento, dentre outras tarefas similares, com os arquivos necessários estando disponíveis num endereço remoto.
  • 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\.

    Imagem gerada no diretório

    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!