ASP.NET - Fazendo o Upload de arquivos
Para fazer um upload em ASP você tinha 2 opções : |
A primeira opção envolvia custos extras pois você teria que pagar pelo componente , teria que registrar o componente no servidor , e isto poderia lhe trazer problemas. A segunda opção envolvia tempo pois você teria que desenvolver e testar o seu componente para ter certeza de que ele iria funcionar.
Com a ASP.NET isto é coisa do passado ; ASP.NET fornece o suporte a upload de arquivos sem a necessidade de componentes COM. Você tem a sua disposição a classe HtmlInputFile da .NET Framework e pode criar uma instância desta classe e usá-la em sua página ASP.NET usando poucas linhas de código para fazer o upload de arquivos.
Preparando para fazer o Upload
Basicamente você vai precisar de duas coisas para fazer um upload em ASP.NET :
ENCTYPE="Multipart/Form-Data"
no formulário HTML
Ex:
<form id="Form1" method="post" runat="server" enctype="multipart/form-data">
Ex: <input id="MeuArquivo" type="file" runat="server">
Nota : O controle
HtmlInputFile pode usar os seguintes atributos:
|
Observe que estamos usando na tag a expressão runat="server" o que indica que este é um controle HTML do servidor do tipo file. Esta tag irá exibir na página uma caixa de teto com um botão para Procurar/Browse o arquivo na máquina local e ser enviado para o servidor.
Feito isto basta escrever algumas linhas de código e pronto seu serviço de envio de arquivos para o servidor esta pronto. Abaixo o código mínimo que faz isto:
<%@ import namespace="System" %>
|
O código funciona assim :
- A tag - <input type="file"
id="arquivo" runat="server" />
permite o upload de arquivos via página
Web
- Foi definido o evento - upload - que será disparado quando o usuário clicar no botão - Enviar.
- No evento - upload - inserimos o código de script que usa as propriedades da classe : HtmlInputFile:
Salvamos o arquivo na pasta :
d:\inetpub\wwwroot\upload\ do servidor :
arquivo.postedfile.saveas ("d:\inetpub\wwwroot\upload\"
& s2)
O método - arquivo.PostedFile.SaveAs
- recebe apenas um argumento : o caminho e o nome do arquivo postado.
Exibimos informações sobre o arquivo enviado:
response.write("<h4>Nome arquivo
: " & arquivo.postedfile.filename & "</h4>")
response.write("<h4>Tamanho arquivo : " & arquivo.postedfile.contentlength &
"</h4>")
response.write("<h4>Content Type : " & arquivo.postedfile.contenttype
& "</h4>")
Ao executar o código acima você obterá as seguintes páginas:
|
|
Página principal solicitando a seleção do arquivo a enviar | Após selecionar o arquivo e clicar no botão - Enviar - teremos as informações sobre o arquivo. |
Melhorando o seu Upload
Percebeu que não temos um tratamento de erros no código acima. E se o upload falhar ???? Vamos então dar uma melhorada no código incluindo o tratamento de erros e exibindo a mensagem para o usuário que o arquivo foi enviado com sucesso ou que a operação falhou :
<html> <script language="VB" runat="server"> Sub upload (Sender as Object, e as EventArgs) Dim strNomeArquivo as string strNomeArquivo = MyFile.PostedFile.FileName Dim NomeArquivo as string = System.IO.Path.GetFileName(strNomeArquivo) Try MyFile.PostedFile.SaveAs("d:\InetPub\wwwroot\upload\" + NomeArquivo) FileName.InnerHtml = MyFile.PostedFile.FileName FileContent.InnerHtml = MyFile.PostedFile.ContentType FileSize.InnerHtml = MyFile.PostedFile.ContentLength Mensagem.Visible = true catch Exp as exception MensagemErro.Visible = true End Try End Sub </Script> <body bgcolor="aqua">
<form method="Post" enctype="Multipart/Form-Data"
runat="Server"> |
O código acima é quase igual ao anterior . Adicionei apenas o tratamento de erros usando o Try/Catch e o controle panel para exibir mensagens para o usuário. Também estou obtendo o nome do arquivo usando o código abaixo :
Dim strNomeArquivo as string
strNomeArquivo = MyFile.PostedFile.FileName
Dim NomeArquivo as string = System.IO.Path.GetFileName(strNomeArquivo)
O final da execução irá gerar a seguinte página :
Então vou ficando por aqui até o próximo artigo
ASP.NET...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Referências: