NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!
UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI
Olá Pessoal,
Estamos de volta, e hoje trago para vocês uma das aplicações mais populares da Web, o Upload de Arquivos.
Transferir um arquivo da máquina local para o servidor Web não era tarefa fácil no ambiente ASP e PHP, por exemplo. Existe uma grande complexidade em utilizar os métodos disponíveis para estes ambiente quando o assunto é trabalhar com arquivos no servidor.
No ambiente ASP.Net, a mudança foi revolucionária, tornando esta tarefa fácil e produtiva.
Faremos isso utilizando a linguagem C#, então prepare o ambiente no Visual Studio .Net, ou no WebMatrix.
Crie um novo projeto chamdo UploadDeArquivos
Crie um novo WebForm chamado Upload.aspx. Abra este arquivo.
Agora vamos inserir três controles, um Label identificado por lblResposta, um DropDownList identificado por dropDiretorio, um Button que executará a ação, chamado btnEnviar e um FileField que não é um objeto do tipo WebForm, mas faremos com que ele processe os dados no servidor. Este controle está localizado na guia HTML. Veja a sugestão da interface:
O próximo passo é fazer com que o controle FileField funcione do lado do servidor e obtenha uma identificação que seja possível interagir com ele dentro do ambiente .Net.
Clique na guia Html. No código Html da aplicação, localize o trecho em que se refere ao file field e acrescente um novo atributo. O Código Html deste controle deverá ficar da seguinte forma:
<INPUT style="Z-INDEX: 105; LEFT: 16px; WIDTH: 248px; POSITION: absolute; TOP: 56px; HEIGHT: 24px" type="file" size="22" runat=server>
O atributo Runat, que está em destaque, é o trecho que devemos adicione para que o controle processe do lado do servidor. Agora volte para a guia Design e selecione novamente o controle FileField. Vá no painel de propriedades e na propriedade Id escreva “MeuArquivo”, sem aspas, é claro.
Agora já podemos ir para o código. Desenvolveremos duas rotinas, uma que carregará os diretórios disponíveis para armazenar o arquivo e outra para o Upload do arquivo.
Importe o seguinte namespace:
using System.IO;
Agora digite o código conforme mostramos abaixo:
private void CarregarDiretorios()
{
//Cria o objeto do tipo directoryInfo baseado no diretório em que aplicação está armazenada
DirectoryInfo Di=new DirectoryInfo("C:/Inetpub/wwwroot/UploadDeArquivos");
//Indica ao dropDiretorio exibir o nome do diretório
dropDiretorio.DataTextField="Name";
//Indica que a fonte de dados do dropDiretorio são os subdiretórios da pasta da aplicação
dropDiretorio.DataSource=Di.GetDirectories();
//Renderiza o controle.
dropDiretorio.DataBind();
}
Esta rotina deverá ser chamada no Page_load:
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
CarregarDiretorios();
}
}
Este código é simples e já foi abordado em um dos meus tutoriais. Leia em Trabalhando com Arquivos.
A próxima rotina verificar se o arquivo a ser transferido foi postado e se o tamanho dele é inferior a 2 Mb, caso contrário, a aplicação mostrará uma mensagem advertindo o usuário.
Digite o código conforme abaixo:
private void EfetuarUpload()
{
//Verifica se o arquivo foi postado
if(MeuArquivo.PostedFile.FileName!=string.Empty)
{
//verifica se o tamanho do arquivo postado é menor que 2Mb
if(MeuArquivo.PostedFile.ContentLength<2097152)
{
//Cria o objeto FileInfo baseado no arquivo postado
FileInfo fl=new FileInfo(MeuArquivo.PostedFile.FileName);
//Salva o arquivo no diretório selecionado com o nome do arquivo postado
MeuArquivo.PostedFile.SaveAs(dropDiretorio.SelectedValue.ToString() + "/" + fl.Name);
//Emite a resposta ao usuário
lblResposta.Text="Upload efetuado com sucesso!";
}
else
{
lblResposta.Text="O tamanho limite para o arquivo é de 2Mb!";
}
}
else
{
lblResposta.Text="É necessário postar o arquivo!";
}
}
Este código aparentemente pode ter ficado extenso, mas note que com apenas uma linha de código nós podemos fazer o Upload do arquivo. Basta utilizar o método SaveAs() do objeto FileField, o resto do código é apenas para tratar as particularidades da aplicação.
Esta rotina acima deverá ser executada no evento Click do btnEnviar:
private void btnEnviar_Click(object sender, System.EventArgs e)
{
EfetuarUpload();
}
Vamos aos testes:
Mostrando os diretórios da pasta da aplicação
Selecionando um arquivo maior que 2MB para testar...
Teste com o arquivo maior que 2MB....
Selecionando um arquivo com tamanho válido....
Upload efetuado!
Confira diretamente na pasta!
É isso aí pessoal,
Espero que tenha sido muito produtiva abordagem deste tema.
Um Abraço e até mais!
Lano de Castro