ASP.NET 2.0 - FileUpload


por Mauricio Junior em 1/1/2011 0

ASP .NET 2.0

FileUpload

 

 

No ASP.NET 1.0/1.1 para fazer upload de arquivos nós tínhamos que trabalhar com o HTML FileUpload. Neste  controle <input type=”file”> precisávamos fazer algumas modificações para podermos utilizá-lo,  como habilitá-lo para ser um Server Control onde teriamos acesso as suas propriedades e também adicionar a tag enctype=”multipart/form-data” no form da página.

 

Com o ASP.NET 2.0 não precisamos mais fazer nada disso, agora nós temos o Server Control FileUpload e o objetivo deste artigo é mostrar como trabalhar com este componente.

 

Criação do projeto

1.    Crie um New Web Site chamado Upload. Linguagem C#.

1.1.                    No arquivo Default.aspx digite o código abaixo, conforme Listagem 1.

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Upload.aspx.cs" Inherits="Upload" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>Untitled Page</title>

</head>

<body>

    <form id="form1" runat="server">

        <asp:FileUpload ID="FileUpload1" runat="server" />

        <p>

            <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="Button1_Click" /></p>

        <p>

            <asp:Label ID="lblMensagem" runat="server"></asp:Label></p>

    </form>

</body>

</html>

Listagem  1 – Código HTML - FileUpload.

 

 

O código acima possui um componete FileUpload, um botão onde vamos digitar o código e um label que irá exibir mensagens como o tamanho e o tipo de arquivo.

Na Figura 1 podemos ver nossa página em modo de Design.

 


Figura 1 – Página em mode de Design.

 

1.      Nosso próximo passo é codificar o botão, de um clique duplo no btnUpload e digite o código conforme Listagem 1.

 

protected void btnUpload_Click(object sender, EventArgs e)

    {

        if (FileUpload1.HasFile)

            try

            {

                FileUpload1.SaveAs("C:\\MeusUploads\\" + FileUpload1.FileName);

                lblMensagem.Text = "Nome do arquivo: " +

                FileUpload1.PostedFile.FileName + "<br>" +

                FileUpload1.PostedFile.ContentLength + " kb<br>" +

                "Tipo de arquivo: " +

                FileUpload1.PostedFile.ContentType;

            }

            catch (Exception ex)

            {

                lblMensagem.Text = "ERRO: " + ex.Message.ToString();

            }

        else

        {

            lblMensagem.Text = "Selecione o arquivo.";

        } 

  }

Listagem  2 – Código do botão btnUpload

 

 

O código da Listagem 2 começa verificando se o usuário selecionou algum arquivo, caso não tenha selecionado ele informa uma mensagem e sai do código, se ele selecionou é feito o upload para a pasta MeusUploads e no label é exibido o nome do arquivo, o tamanho e o tipo de arquivo, caso ocorra algum erro nós  utilizamos o Try / Catch. Veja na Figura 2 um upload realizado.

 

Figura 2 – Upload

 

Caso ocorra erros de permissão, conceda a conta ASP.NET Machine Account direito sobre a pasta na qual você trabalhando com o Upload, no meu caso MeusUplods.

 

 

 

 

 

 

 

 

 

 

 

 

Uma outra modificação que pode ser feita é limitar o tamanho do arquivo. No arquivo Web.Config digite conforme a Listagem 3. No exemplo o tamanho máximo de Upload é de 4096 KB.

 

 

<httpRuntime

idleTime=”15”

executionTimeout=”90”

maxRequestLength=”4096”

useFullyQualifiedRedirectUrl=”False”

minFreeThreads=”8”

minLocalRequestFreeThreads=”4”

appRequestQueueLimit=”100”

/>

Listagem  3 – Arquivo Web. Config.

 

 

 

Pode alterar para 10 MB altero o maxRequestLength=”11000” .

 

Com isto podemos fazer facilmente upload em nossos projetos.

 

 

 

 

Abraços e até o próximo.

voltar   comente  subir

 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:
Comentado por: Paulo César - 1/2/2007 15:02:21
Fábio,

Adorei o artigo. Estou desenvolvendo uma aplicação e este tópico foi muito importante, uma vez que sou iniciante no C# ( e visual estudio). Parabéns pela simplicidade e clareza no artigo.
Comentado por: Danei Lahm - 14/6/2007 11:15:14
O tópico é de grande relevância, mas o componente FileUpload tem sérios problemas de funcionamento quando a página utiliza Ajax, como resolver, se é que existe solução para este tipo de problema?
Comentado por: renan - 4/7/2007 11:03:01
Não deu certo, ele sempre ta falso no hasfile.
Comentado por: Renan - 4/7/2007 11:08:39
Oi fábio, venho a lhe enviar esse e-mail por conta de meu desespero, estou a 4 dias "googleando" procurando sobre fileUpload.
Eu queria fazer exatamente o que vc fez em seu tópico, sendo ele: http://www.aspneti.com/visualizar/downloadArtigo.aspx?ch_artigos=133

Nele vc faz um label receber o caminho do arquivo, e eu queria fazer exatamente isso, porém na linha
do if(FileUpload1.HasFile) a variável HasFile sempre está como false, mesmo que eu selecione qualquer arquivo do micro.

Se vc pudesse me ajudar com isso eu lhe agradeceria muito, alias só de ler esse comentario eu ja lhe agradeço.
Comentado por: Rodrigo - 4/1/2008 10:46:08
Realmente não funciona com ajax
Comentado por: Michelle - 14/1/2008 11:12:42
Ola!!
Gostaria de agradecer pelo artigo.
O sitema não carregava arquivos grandes...
Precisei definir o tamanho...
Obrigado pela dica..
bjao!!
Comentado por: Nélio Henrique Neves - 25/1/2008 0:57:19
Cara, ótimo esse artigo.. Mto simples e funcional, me ajudou muito mesmo. É por essas e outras que eu adoro o C#.
valeu. abraços.
Comentado por: Renato - 20/3/2008 0:00:00
Excelente tutorial
Comentado por: serialdaemon - 7/1/2009 0:00:00
Solução

http://www.codeplex.com/fileuploadajax/release/projectreleases.aspx?releaseid=8061
Comentado por: Jansle Paulo - 23/6/2009 0:00:00
Mto bom
obrigado pela dica

Comente (dê sua opinião):
Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Detectando ENTER
Criando Teclas de Atalho no Windows Form
Criptografando URL
iSecurity Password Free
Exemplo usando try e catch
Tecla ESC na tela WEB
Public Interface
Sistema iGas - Controle de Gasolina
Mensagem JavaScript com .NET
Armazenando Dados no ViewState Parte II
Criando arquivo usando Visual Studio.NET 2005
Web 2.0 - A máquina somos nós
Ophone The Microsoft - Vídeo
Visual Studio 11 – Novas funcionalidades e melhorias parte 3
Teclas de Atalho do Visual Studio .NET 2010
WebServices usando soapHeader
Ativando debug do VS no Vista
Event Log Parte II - Visual Studio.NET 2005
Inside Xbox Live Game
Adicionando Menu no DataGridView
Dica Importante SQL Server 2008 Management Studio
Projeto Natal é mostrado para a mídia
Perguntas Mais Freqüentes de ASP.NET
Permissão de Página Utilizando Web.Config
SmartNavigation – 1.0 e 1.1 MaintainScroll PositionOn Postback – 2.0
M-Payment com Google Wallet
MaskedTextBox da direita para esquerda
Trabalhando com diretório e arquivo
Virtual Earth – Primeiro Passo
Enviado email anexado
Programando em Windows Forms e abrindo na web
E-mail Carta de Amor - Vírus
OpenWave SDK 6.2.2
SQLEngine Utilizando Upgrade
Montando Menu Dinâmico com Banco de Dados