Upload de arquivos com C#

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (6)  (0)

Veja neste artigo como fazer upload de arquivos utilizando a IDE Visual Studio 2012 com a linguagem de programação C#.

O upload de arquivos é uma tarefa comum no ambiente de desenvolvimento de software, no entanto é necessário realizar um estudo para verificar que tipos de tratamentos a sua funcionalidade apresentará.

Neste artigo em especial aprenderemos como importar um arquivo “txt”,ou seja, se o usuário escolher algum arquivo que não seja “txt” será exibindo uma mensagem amigável e consequentemente a importação será cancelada, até que um arquivo válido tenha sido informado.Algumas perguntas podem surgir como: Porque não deixar apenas o FileUpload, salvar os arquivos, sem verificar tipo ou tamanho do mesmo? Afinal o servidor que utilizo tem muito espaço de armazenamento. Para essa pergunta, nós podemos aprender que não importa se o servidor a ser utilizado possui muito espaço de armazenamento, isso é boa notícia, no entanto o cliente expressará suas vontades dizendo quais são as limitações para determinado campo.Por exemplo:

  • Este campo só deve aceitar XX(kbytes).
  • Este campo só pode fazer upload de arquivos excel e pdf
  • Ao importar um arquivo de tamanho excedido de acordo com as regras de negócio da aplicação, enviar um email dando ao usuário logado instruções de como compactar arquivos.

Utilizaremos o WebServerControl FileUpload, por ser um controle nativo do asp.net, é claro que essa mesma operação é possível utilizando a linguagem de marcação (HTML) um campo INPUT com o seu atributo “type” e valor “File”.

Além de realizar um upload de arquivos, aplicação irá ler os dados do arquivo recentemente importado e extrairá algumas informações para a pagina principal da aplicação.

O Aplicação será bem simples, se consistirá de um projeto ASP.NET Empty Web Application, com apenas uma página “.aspx” e fará o uso do namespace System.IO, para leitura do arquivo texto.

OBSERVAÇÃO: Este exemplo valida se o arquivo é do tipo “.txt”, no entanto se desejar pode fazer com outras extensões também, é o mesmo processo.

Criando o Projeto

Vamos criar um projecto ASP.NET Empty Web Application utilizando a linguagem C#.Para isso siga os seguintes passos:

  • Clique em File e depois em New Project
  • Na guia templates selecione “Visual C#”=> “Web”=>” ASP.NET Empty Web Application”
  • Escolha o nome que você deseja para o seu projeto, no artigo utilizaremos apenas o nome FileUploadControl(Lembrando que o namespace terá o mesmo nome do projeto).
  • Para Finalizar clique em ok.
  • Pronto o nosso projeto ja está criado, agora vamos a parte mais legal, colocar a mão na massa.
Criando o projeto

Figura 1: Criando o projeto

Bom o foco do artigo é explicar de forma didática como realizar importação de um arquivo “txt”, então eu não me preocupei muito com o layout da aplicação, acredito que o mesmo esteja atendendo as explicações logo abaixo.

Listagem 1: FileUpload.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileUpload.aspx.cs" Inherits="FileUploadControl.FileUpload" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    
        <div id="Titulo">

            <h1>FILEUPLOAD  ASP.NET e C#</h1>
            <hr />
        </div>
        <div>

        <asp:Label  id="lblData" Text="Data de Aniversário" runat="server" ></asp:Label>
        <asp:TextBox ID="txtData" ReadOnly="true" Width="66" runat="server"></asp:TextBox>
       <asp:Label runat="server" ID="lblArquivo" style=" margin-left:23px;" Text="Arquivo:"></asp:Label>
         <asp:FileUpload ID="FileUpload1" style=" margin-left:30px;" runat="server" /> 
       
        <br />
        <asp:Label ID="lblIdade" runat="server" Text="Idade:"></asp:Label>
        <asp:TextBox runat="server" Width="66" ReadOnly="true" style=" margin-left:83px" ID="txtIdade"></asp:TextBox>

        <asp:Label ID="lblValor" runat="server" style=" margin-left:25px;" Text="Valor Total:"></asp:Label>
        <asp:TextBox runat="server" style=" margin-left:10px;" ReadOnly="true" ID="txtValor"></asp:TextBox>
        <br />
        <asp:button id="button1" runat="server" text="Importar" OnClick="button1_Click" />
        <br />
        <br />
        <asp:Label Text="" ID="Statuslbl" runat="server" />
    </div>
    </form>
</body>
</html>

Analisando o código acima, criamos um WebForm contendo três campos TextBox com a propriedade ReadOnly=True, uma label informando a situação da importação do arquvio e por final um controle de tipo FileUpload..

OBSERVAÇÃO: Neste artigo ao importar o arquivo, poderemos visualizar as informações nos campos, no entanto é uma boa prática deixar apenas para leitura, afinal estamos alterando uma informação proveniente de uma outra fonte de dados, isso não é regra, pode ser que o cliente queria sobrepor informações.

Arquivo teste.txt

Figura 2: Arquivo teste.txt

Observe que o nosso arquivo txt possui apenas uma linha, os dados informados estão soltos sem nenhuma identificação, o parâmetro de busca será pelo caracter separador o “;”. A partir deste delimitador conseguiremos extrair as informações necessárias

OBSERVAÇÃO: Este arquivo possui apenas uma linha de exemplo, o mesmo poderia ter varias linhas, possuindo o mesmo delimitador a informação seria extraída com sucesso da mesma forma.

Listagem 2: FileUpload.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

namespace FileUploadControl
{
    public partial class FileUpload : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        private bool UploadArquivo()
        {

            FileUpload1.SaveAs((@"C:\Users\Tiago\Documents\"
                    + FileUpload1.FileName));
            return true;
        }

        private void Ler()
        {
            List<string> lista = new List<string>();

            using (StreamReader sr = new StreamReader(@"C:\Users\Tiago\Documents\" + FileUpload1.FileName))
            {
                string linha = sr.ReadToEnd();
                string[] array = linha.Split(';');

                txtData.Text = array[0];
            	  txtIdade.Text = array[1];
                txtValor.Text = array[2];


            }

        }
        protected void button1_Click(object sender, EventArgs e)
        {
            if (FileUpload1.PostedFile.ContentType == "text/plain")
            {
                try
                {
                    if (UploadArquivo())
                    {

                        Ler();


                    }
                    else
                    {
                        Statuslbl.Text = "Não foi possível realizar a importação do arquivo";
                    }
                }

                catch (Exception)
                {

                    throw;
                }
            }
            else
            {
                Statuslbl.Text = "Favor coloque um arquivo .txt";

            }
        }

    }
}

O código acima possui dois Event Handlers importantes, tratando as operações básicas da aplicação como: Upload do arquivo e a leitura do mesmo e um evento de importar o arquivo. Caso o código esteja um pouco complicado, recomendo que estude o namespace System.IO a classe StreamReader, para poder se familiarizar com a sintaxe.

OBSERVAÇÃO: No momento de salvar o arquivo importado no servidor, verificar se o seu usuário possui permissões de escrever dados no disco, caso contrário será lançada uma exceção.

Execução do Projeto

Já que metemos a mão na massa programando, nada melhor do que testar a nossa aplicação, importando um arquivo válido e conferindo na página web os dados extraídos, fique a vontade de inserir um arquivo inválido e perceber como a verificação por tipo de arquivo acontece.

. Tela Inicial aplicação

Figura 3: Tela Inicial aplicação.

Esta é a página Default, da nossa aplicação, o próximo passo será escolher o arquivo desejado e em seguida importar-lo.

Arquivo Importado com sucesso.

Figura 4: Arquivo Importado com sucesso.

O arquivo foi importado com sucesso e os dados contido nele foram recuperados pela nossa aplicação, simples não?

Conclusão

Neste artigo tivemos a oportunidade de conhecer o WebServerControl FileUpload, afim de facilitar o nosso trabalho para upload de arquivos utilizando o .NET framework com a linguagem de programação C#.

Exploramos de forma bastante rápida a classe StreamReader pertencente ao namespace System.IO, afim de recuperarmos a informação do arquivo para a nossa aplicação web. Espero que tenham gostado e até a próxima.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?