UPLOAD COM MÚLTIPLOS ARQUIVOS

Realizar 1 upload de arquivo com ASP.NET é tarefa muito simples. Classes e controles existentes no .NET Framework facilitam em muito nosso trabalho, e como não poderia ser diferente, venho neste arquivo demonstrar como realizar Upload de múltiplos arquivos usando um ArrayList(). Então, mãos à obra.

 

Realizar 1 upload de arquivo com ASP.NET é tarefa muito simples. Classes e controles existentes no .NET Framework facilitam em muito nosso trabalho, e como não poderia ser diferente, venho neste arquivo demonstrar como realizar Upload de múltiplos arquivos usando um ArrayList(). Então, mãos à obra.

Abra o VS2005 e com ele crie um novo projeto do tipo Web. Elimine ou altere nome do arquivo Default.aspx, deixando como upload.aspx. Também adicione um novo diretório com o nome de upload no Projeto e seu Soluction Explorer deve estar como a imagem que segue, figura 1.0.


Figura 1.0 – Soluction Explorer

 

Adicione os seguintes controles na página upload.aspx.

  1 Controle FileUpload

ID = fupArquivo

  1 Controle ListBox
ID = lstArquivos

  3 Controles Button
Button1
ID =btnAdicionar
Text = Adicionar

Button2
ID =btnUpload
Text = Upload

Button3
ID =btnDeletar
Text = Deletar

  1 Label
ID = lblMensagem
Text = “”

Organize os controles como você preferir, eu os organizei como segue na figura 1.1


Figura 1.1 – Organização dos controles na página


Vamos agora ao código. De um duplo clique sobre o botão Adicionar e insira o seguinte código:

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.IO;

 

public partial class upload : System.Web.UI.Page

{

  //Criamos uma variável do tipo ArrayList. Perceba que ela é “Estática”

  static public ArrayList arrArquivos = new ArrayList();

 

  protected void Page_Load(object sender, EventArgs e)

{

//Page_Load Event.

}

  protected void btnAdicionar_Click(object sender, EventArgs e)

{

//Vamos verificar se não existe arquivo selecionado no controle FileUpload.

if(!fupArquivo.HasFile)

{

ClientScriptManager cs = Page.ClientScript;

cs.RegisterClientScriptBlock(this.GetType(),"Erro","alert(Selecione um arquivo para carregar!)",true);

return;

}

//Verificamos o tamanho do arquivo em bytes. Nesse caso faço Upload de até 11MB

if(fupArquivo.PostedFile.ContentLength > 11000000)

{

ClientScriptManager cs = Page.ClientScript;

cs.RegisterClientScriptBlock(this.GetType(), "Erro", "alert(O tamanho do arquivo é maior que o tamanho permitido!)", true);

return;

}

else

{

//Adicionamos o arquivo ao arrayList, em seguida ao ListBox.

arrArquivos.Add(fupArquivo);

lstArquivos.Items.Add(fupArquivo.PostedFile.FileName);

}

   }  

}

 

Perceba que o código está comentado onde acredito realmente ter necessidade, portanto dispensa maiores comentários.

Vamos adiante com o nosso exemplo. Vamos agora codificar o botão “Deletar”.

Novamente, em modo design, efetue um duplo clique no botão Deletar e insira o seguinte código.

  protected void btnDeletar_Click(object sender, EventArgs e)

  {

if(lstArquivos.SelectedIndex > -1) //Se for selecionado algum item da lista

{

arrArquivos.Remove(lstArquivos.SelectedValue); //Remove o item do ArrayList

lstArquivos.Items.Remove(lstArquivos.SelectedValue); // Remove tbm do ListBox

}

else

{

ClientScriptManager cs = Page.ClientScript;

  cs.RegisterClientScriptBlock(this.GetType(),"Selecionar","alert(Selecione um arquivo na lista!)",true);

return;

}

  }

O botão Deletar como podemos perceber através do código, vai nos permitir eliminar arquivos da lista de Uploads. Este botão remove o item do ListBox e obrigatóriamente também deve remover do ArrayList para evitar exceptions.

Agora vamos codificar o botão “Upload” da mesma forma que codificamos os controles antecedentes. Efetue um duplo clique sobre o botão Upload e insira o código.

  protected void btnUpload_Click(object sender, EventArgs e)

  {

//Pegamos o caminho do diretório onde vamos salvar os Uploads

String caminho = Server.MapPath("upload\\");

foreach(FileUpload iFile in arrArquivos) //Para cada Arquivo iFile em arrArquivos

{

//Salvo o arquivo no diretório base, nesse caso "caminho".

iFile.PostedFile.SaveAs(caminho + Path.GetFileName(iFile.PostedFile.FileName));

lblMensagem.Text = "Upload de: " + lstArquivos.Items.Count.ToString() + " arquivo (s) Realizado com sucesso!";

}

lstArquivos.Items.Clear(); //Limpamos o ListBox

arrArquivos.Clear(); //Limpamos o ArrayList

 

 }

 
Para finalizarmos, se faz necessário uma pequena configuração no arquivo web.config já que neste exemplo estou criando um Upload de até 11MB. Abra o arquivo web.config e dentro de <system.web> temos que configurar nossa aplicação de modo que ela nos permita adicionar arquivos com até 11MB. Isso se faz através do elemento httpRunTime. Veja como ficou o meu arquivo web.config.

<configuration>

<appSettings/>

<connectionStrings/>

<system.web>

 

<compilation debug="true"/>

 

<authentication mode="Windows"/>

 

<httpRuntime

executionTimeout="90"

maxRequestLength="11000"

/>

</system.web>

</configuration>

 

executionTimeout="90"

Especifica o número máximo de segundos em que é permitido a execução de um pedido [request], após este tempo o request é finalizado automaticamente

 

maxRequestLength="11000"

Determina o tamanho máximo do arquivo de Upload, definido em KB. O padrão é de 4096

 

 

Feito este ajuste no web.config pode rodar sua aplicação e adicione e exclua arquivos na lista e finalmente efetue o Upload dos arquivos. Se você seguiu corretamente os passos indicados neste artigo sua aplicação deve funcionar perfeitamente.

Após o Upload dos arquivos, no Server Explorer do VS2005, clique em Refresh para atualizar o a árvore de projeto e você verá os arquivos listados no diretório upload. Figura 1.2.


Figura 1.2 - Refresh no Soluction Explorer


 

Bem, vou ficando por aqui, uma ótima semana a todos e até o próximo...

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

Artigos relacionados