Como: Carregar arquivos com controle de servidor Web FileUpload

O controle de servidor Web FileUpload permite a você fornecer aos usuários uma maneira para enviar um arquivo dos seus computadores para o servidor.O arquivo a ser carregado é enviado ao servidor como parte da solicitação do navegador durante o postback.Após o arquivo ser carregado, você pode gerenciar o arquivo no seu código.

Observação:

O tamanho máximo de arquivo que pode ser carregado depende do valor do parâmetro de configuração MaxRequestLength.Se os usuários tentarem carregar um arquivo que é maior que o máximo, o carregamento falhará.

Para carregar um arquivo com o controle do servidor Web FileUpload

  1. Add a FileUpload control to the page.

    Observação:

    Por motivos de segurança, você não pode pré-carregar o nome de um arquivo no controle FileUpload.

  2. Em um manipulador para um evento, como o evento Load da página, faça o seguinte:

    1. Verifique se o controle FileUpload possui um arquivo carregado, testando sua propriedade HasFile.

    2. Verifique o nome do arquivo ou o tipo MIME do arquivo para certificar-se que os usuários carregaram um arquivo que você quer aceitar.Para verificar o tipo MIME, obtenha o objeto HttpPostedFile exposto como a propriedade PostedFile do controle FileUpload.Em seguida, você pode obter o tipo MIME, verificando a propriedade ContentType remetida da página.

      Observação de segurança:

      Tipos MIME para arquivos carregados pode ser falsificados em algumas circunstâncias, somente verificação do tipo MIME do arquivo não é uma forma de verificação de segurança confiável.

    3. Salve o arquivo para um local especificado.Você pode chamar o método SaveAs do objeto HttpPostedFile.Como alternativa, você pode gerenciar o arquivo carregado como uma matriz de bytes ou um fluxo usando a propriedade InputStream do objeto HttpPostedFile.

    O exemplo a seguir mostra como trabalhar com um arquivo carregado.O código verifica a extensão do arquivo carregado usando uma lista de extensões de nome de arquivo permitidos embutida em código e rejeita todos os outros tipos de arquivos.Em seguida, o arquivo é gravado para uma pasta UploadedImages no site da Web atual.O arquivo carregado é salvo com o mesmo nome de arquivo que ele tinha no computador cliente.A propriedade FileName do controle FileUpload é utilizada porque a propriedade FileName do objeto HttpPostedFile retorna o caminho completo do arquivo no computador cliente.

    Observação de segurança:

    Não exiba o caminho e o nome do arquivo salvo aos usuários; isso pode revelar informações que podem ser úteis para usuários mal-intencionados.

    Protected Sub Page_Load(ByVal sender As Object, 
            ByVal e As System.EventArgs) Handles Me.Load
        If IsPostBack Then
            Dim path As String = Server.MapPath("~/UploadedImages/")
            Dim fileOK As Boolean = False
            If FileUpload1.HasFile Then
                Dim fileExtension As String
                fileExtension = System.IO.Path. _
                    GetExtension(FileUpload1.FileName).ToLower()
                Dim allowedExtensions As String() = _
                    {".jpg", ".jpeg", ".png", ".gif"}
                For i As Integer = 0 To allowedExtensions.Length - 1
                    If fileExtension = allowedExtensions(i) Then
                       fileOK = True
                    End If
                Next
                If fileOK Then
                    Try
                        FileUpload1.PostedFile.SaveAs(path & _
                             FileUpload1.FileName)
                        Label1.Text = "File uploaded!"
                    Catch ex As Exception
                        Label1.Text = "File could not be uploaded."
                    End Try
                Else
                    Label1.Text = "Cannot accept files of this type."
                End If
            End If
        End If
    End Sub
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if(IsPostBack)
        {
            Boolean fileOK = false;
            String path = Server.MapPath("~/UploadedImages/");
            if (FileUpload1.HasFile) 
            {
                String fileExtension = 
                    System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
                String[] allowedExtensions = 
                    {".gif", ".png", ".jpeg", ".jpg"};
              for (int i = 0; i < allowedExtensions.Length; i++)
              {
                   if (fileExtension == allowedExtensions[i])
                   {
                        fileOK = true;
                   }
              }
            }
    
            if (fileOK)
            {
                try
                {
                    FileUpload1.PostedFile.SaveAs(path 
                        + FileUpload1.FileName);
                    Label1.Text = "File uploaded!";
                }
                catch (Exception ex)
                {
                    Label1.Text = "File could not be uploaded.";
                }
            }
            else
            {
                Label1.Text = "Cannot accept files of this type.";
            }
        }
    }
    

Consulte também

Conceitos

Visão geral sobre o controle FileUpload de servidor Web