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.

Por | @oficinadanet Programação
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.

Upload com Múltiplos arquivos
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

Upload com Múltiplos arquivos
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 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.


      
      
      

            

            

           executionTimeout="90"
      maxRequestLength="11000"
    />
      
      



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.
Upload com Múltiplos arquivos
Figura 1.2 - Refresh no Soluction Explorer

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

Autor: Valdir da Rosa Silva

========================================
Conheça nosso parceiro e fonte desta matéria:

target="_blank">Upload com Múltiplos arquivos

Mais sobre:
Share Tweet
DESTAQUESRecomendadoMais compartilhados
Comentários
  • ASSINE NOSSA NEWSLETTER

    As melhores publicações no
    seu e-mail

  • Preencha para confirmar