segunda-feira, 27 de janeiro de 2014

FileUpload Multiple ASP.NET C#


Neste tutorial estaremos aprendendo como fazer:
- Upload de vários arquivos
- Filtrar a seleção de arquivos
- Selecionar mais de um arquivos
- Salvar em uma pasta.

1º Preparar o layout do site.

Adicione a sessão dentro da tag <form>


<asp:FileUpload runat="server" ID="fuImagem" accept=".jpg,.png" AllowMultiple="True" />

O que é importante aqui?
O atributo accept é responsável por filtrar a seleção dos arquivos. Exemplo
Arquivo de imagem = image/*
Arquivo de video = video/*
Arquivo de audio = audio/*
Mais de um arquivo = .jpg, .png, .bmp

Lista completa dos arquivos suportados Clique aqui

O atributo AllowMultiple é responsável por selecionar mais de um arquivo quando esta setado para true.



2º Preparar o code behind (F7)
Para fazer o upload de vários arquivos é preciso fazer um laço de repetição, nesse caso, estaremos utilizado o for.

O c# guarda os arquivos do controle fileupload em Context.Request.Files.

Feito isso, precisamos tratar um arquivo de cada vez, então, utilizaremos a classe HttpPostedFile que contém as propriedades: nome do arquivo, tamanho, mime type e o arquivo em si.

A seguir um exemplo:

protected void btnSalvar_Click(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < Context.Request.Files.Count; i++)
                {
                    HttpPostedFile file = Context.Request.Files[i];
                    string nome = file.FileName;
                    const string endereco = @"c:\tmp\";
                    file.SaveAs(endereco + nome);
                }

                lblMensagem.Text = "Salvo com sucesso";


            }
            catch (Exception ex)
            {
                lblMensagem.Text = "Houve um erro: " + ex.Message;
            }
        }

A segui uma vídeo aula.





PrintScreen do tutorial.