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.

Upload de arquivos com ASP.NET sem mistérios

 

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[i].ToString(),SemAcentos[i].ToString()).Trim();

 

return texto; 

      

}

 

Espero que tenham aproveitado e até a próxima!

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados