CADASTRE-SE

ASP.NET›  

Upload de arquivos com ASP.NET sem mistťrios

Este artigo mostra como fazer o upload de arquivos para o servidor utilizando a linguagem C# da plataforma .NET com o Visual Studio 2003.

NŪcolas MŁller (@nicolas_muller)
Neste primeiro artigo publicado no site DevMedia vou abordar a submiss„o de arquivos para o servidor utilizando a linguagem C# da plataforma .NET com o Visual Studio 2003, pois esta plataforma tem uma grande variedade de bibliotecas e no nosso exemplo n„o utilizaremos nenhum componente especŪfico.

Vamos acrescentar algumas regras no upload do arquivo para n„o haver nenhum tipo de inconsistÍncia. As regras s„o as seguintes:

- O tamanho limite do arquivo serŠ de 200 Kb;

- HaverŠ um mťtodo para remover caracteres indesejados, espaÁos, etc;

- Faremos uma verificaÁ„o para ver se jŠ existe um arquivo com o mesmo nome do arquivo que estamos submetendo. Se existir n„o serŠ feito o upload e vai aparecer uma mensagem para o usuŠrio alterar o nome do arquivo;

- As extensűes de arquivos ser„o limitadas, sendo as seguintes: jpg, gif, doc, pdf.


Obs.: Verificar as permissűes no diretůrio onde ser„o gravados os arquivos que deve estar como escrita. Criar um diretůrio virtual para rodar a aplicaÁ„o.


Průximo passo, a implementaÁ„o:

Vamos utilizar um input file, um label e um button no nosso form, no evento onClick do button colocaremos o trecho de cůdigo abaixo com os comentŠrios:

*********** inŪcio cůdigo evento onclick button

try

{



//inicializar as variŠveis



string arq = fileImg.PostedFile.FileName;¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬† 



string extensao = "";



double tamanho = 0;



//tamanho maximo do upload em kb



double¬†¬†permitido = 200;



//vamos utIlizar uma variavel para controlar a aceitaÁ„o das regras



//se o valor padr„o da variavel for alterado ť porque alguma regra foi violada



string erroRegra="0";



// Teste para verificar se foi submetido o arquivo



if (fileImg.PostedFile !=null)

{



//identificamos o tamanho do arquivo



tamanho = Convert.ToDouble(fileImg.PostedFile.ContentLength)/1024;



¬†¬†¬†¬†¬†¬†//verificamos a extens„o atravťs dos ķltimos 4 caracteres



¬†¬†¬†¬†¬†¬†extensao = arq.Substring(arq.Length - 4).ToLower();



¬†¬†¬†¬†¬†¬†//para saber o nome do arquivo utilizaremos a propriedade GetFileName



¬†¬†¬†¬†¬†¬†//passando a string arq



¬†¬†¬†¬†¬†¬†string nomeArq = System.IO.Path.GetFileName(tira_acentos(arq));



¬†¬†¬†¬†¬†¬†//diretorio onde serŠ gravado o arquivo



¬†¬†¬†¬†¬†¬†//faremos uma chamada ao mťtodo tira_acentos para



¬†¬†¬†¬†¬†¬†//remover espaÁos e caracteres indesejados.



¬†¬†¬†¬†¬†¬†//criar o diretůrio arquivos no mesmo local da aplicaÁ„o



¬†¬†¬†¬†¬†¬†string diretorio = this.Server.MapPath("arquivos\"+tira_acentos(nomeArq));



¬†¬†¬†¬†¬†¬†// o tamanho acima do permitido - violaÁ„o de regra



¬†¬†¬†¬†¬†¬†if (tamanho > permitido)

      {



¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†this.Label1.Text = "Tamanho MŠximo permitido ť de "+permitido+" kb!";



            erroRegra="1";



      }



¬†¬†¬†¬†¬†¬†// extens„o diferente de jpg, doc, pdf e gif - violaÁ„o de regra



¬†¬†¬†¬†¬†¬†if ( (extensao != ".jpg" && extensao != ".gif" && extensao!=".doc" && extensao!="pdf") )

      {



¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†this.Label1.Text ="Extens„o invŠlida, sů s„o permitidas .jpg, .doc, .pdf e .gif!";



            erroRegra="2";



      }



      if(erroRegra=="0")

      {



            try

¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬† {



¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†// verifica se jŠ existe o nome do arquivo submetido



                  if(!File.Exists(diretorio))

                  {



                        fileImg.PostedFile.SaveAs(diretorio);



¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†this.Label1.Text ="Arquivo enviado com sucesso!";



                  }

                  else

¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†this.Label1.Text ="JŠ existe um arquivo com esse nome!";



                  }



¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†//Caso ocorra alguma exceÁ„o serŠ mostado no label



¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†catch(UnauthorizedAccessException ex)

                  {



¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†this.Label1.Text ="Erro no Upload:"+ex.Message;¬†¬†¬†¬† 



                  }



        }



}



}



catch

{



¬†¬†¬†¬†¬†¬†this.Label1.Text ="Erro no Upload";



}



 



*********** fim cůdigo evento onclick button



O mťtodo abaixo remove acentos e caracteres indesejados e substitui por outros sem acento no nome do arquivo. Vejamos:


//Mťtodo que remove acentos, espaÁos e carateres indesejados



public static string tira_acentos(string texto)

{

string ComAcentos = "!@#$%®&*()-?:{}][ńŇѬņ√šŠ‚ŗ„… ň»ťÍŽŤÕőŌŐŪÓÔž÷”‘“’ŲůŰÚű‹ŕŘŁķŻý«Á ";



¬†¬†¬†¬†¬†¬†string SemAcentos = "_________________AAAAAAaaaaaEEEEeeeeIIIIiiiiOOOOOoooooUUUuuuuCc_";



¬†¬†¬†¬†¬†¬†for(int i=0; i < ComAcentos.Length; i++)



¬†¬†¬†¬†texto= texto.Replace(ComAcentos<em>.ToString(),SemAcentos<em>.ToString()).Trim();

¬†¬† 



return texto; 

}



Espero que tenham aproveitado e atť a průxima!
========================================
ConheÁa nosso parceiro e fonte desta matťria:
target="_blank">

Autor da Matťria: Fabio Andre Barcelos

ComentŠrios:
Compartilhe com seus amigos:


destaques da home page
Cadastre-se em nossa newsletter:

As melhores histůrias em seu e-mail:




TOPO