Upload de arquivos com ASP.NET sem mistérios

Novo aqui no site? Talvez gostaria de assinar o
RSS feed do site?

Publicado em: 10/06/2007
Área: .NET
Visualizações: 8.647
Comentário(s): 1

imprimir envie por e-mail compartilhe
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.ToString(),SemAcentos.ToString()).Trim();
  

return texto;
}



Espero que tenham aproveitado e até a próxima!
========================================
Conheça nosso parceiro e fonte desta matéria:


Autor da Matéria: Fabio Andre Barcelos

Preencha o formulário para comentar:
Nome:*

E-mail:* (não será exibido)

Site: (http://)

Comentário:*

Deseja receber os comentários no e-mail?

Anti-spam: (nova imagem)





Lukas Hills

   - Publicado em: 19/06/2007 - 02:47

Olá Nícolas, Um bom dia! Visitei o seu site e gostei muito. Parabéns! Estou enviando esta mensagem para pedir um código usado num formulário para enviar anexos. Estou com um formulário pronto. Mas, não estou conseguindo fazer com que as informações digitadas e os anexos sejam enviadas para o meu e-mail logo que o usuário envia o formulário. O formulário que estou usando grava os anexos e o texto digitado pelo usuário num diretório determinado, mas não envia nada para o meu e-mail. Tenho que pegar as informações manualmente via FTP. Então, como eu faço para que estas informações sejam encaminhadas juntamente com os anexos para o meu e-mail logo que o usuário do meu site submetê-las? Os Componentes instalados no Servidor que uso são: CDONTS Object ADO DB Object File System Object ASPMail Object ASPUpload Object JMail Object Desde já agradeço a sua ajuda e aguardo o seu contato. Abraços, Lukas Hills

 

Autor da matéria
Nícolas Müller
Sou um profissional da área de internet, trabalho como programador, designer e desenvolvedor de sites, faz cerca de 8 anos que estou atuando na área , sendo 5 .

Todas as matérias de Nícolas Müller

Publicidade
Seguir o Oficina da Net
RSS

RSS

RSS
Top matérias do mês
Matérias relacionadas
Tags

© 2005 - 2009 - Oficina da Net - v 4.0 - É proibida a reprodução parcial ou completa do conteúdo deste site sem autorização por escrito. Resolução adequada: 1024x768px.