Usar o Visual C# para carregar um arquivo em um site da Web

Este artigo descreve como carregar um arquivo usando o Microsoft Visual C#.

Versão original do produto: Visual C#, ASP.NET, Internet Information Services
Número original do KB: 816150

Introdução

Este artigo passo a passo discute como carregar um arquivo de imagem existente da unidade de disco rígido local para um site. Um controle de entrada é usado para carregar uma imagem do computador local. Esse arquivo que está sendo carregado é validado no servidor para garantir que você não substitua um arquivo existente que já foi carregado. O arquivo carregado será validado se ele existir no servidor. Este artigo usa o EncType atributo do formulário para obter a funcionalidade.

Requisitos

Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:

  • Aplicativos web
  • ASP.NET

A lista a seguir descreve a infraestrutura de rede e software recomendada de que você precisa:

  • Visual C# .NET ou Visual C#
  • IIS (Serviços de Informações da Internet)

Criar um formulário Web ASP.NET

  1. Inicie o Visual Studio .NET ou o Visual Studio.

  2. No menu arquivo, aponte para novo e, em seguida, clique em Project.

    Observação

    No Visual Studio, aponte para Novo no menu Arquivo e clique em Site da Web.

  3. Em Tipos de Projeto, clique em Projetos do Visual C#. Em Modelos, clique em ASP.NET Aplicativo Web.

    Observação

    No Visual Studio, selecione Visual C# à direita do Idioma. Em Modelos, clique em ASP.NET Site da Web.

  4. Na caixa Localização, digite o seguinte local e clique em OK:
    http://WebServerName/ApplicationName

    Observação

    WebServerName é um espaço reservado para o nome do servidor Web. ApplicationName é um espaço reservado para o nome do seu aplicativo.

    Por padrão, o WebForm1.aspx é criado.

    Observação

    No Visual Studio, selecione HTTP à direita do Local e digite<http://WebServerName> .

  5. No menu Exibir , clique em fonte HTML.

    Observação

    No Visual Studio, clique em Código no menu Exibir .

Modificar os atributos de formulário

Na janela HTML do WebForm1, substitua a marca de formulário pelo seguinte:

<form id="Form1" method="post" runat="server" EncType="multipart/form-data" action="WebForm1.aspx">

O EncType atributo especifica o formato dos dados postados. O navegador usa esse atributo para codificar as informações postadas no servidor. O atributo de ação neste código especifica que a página processará a solicitação. Por padrão, o atributo do método do formulário é definido como postagem para que você possa enviar grandes quantidades de dados na transação.

Adicionar o controle de entrada para especificar o arquivo que você deseja carregar no servidor

  1. Na janela HTML do WebForm1, adicione o seguinte código entre as marcas de abertura e fechamento <form> :

    <INPUT id="oFile" type="file" runat="server" NAME="oFile">
    

    Este controle de entrada especifica o arquivo que você deseja carregar no servidor.

  2. Você pode adicionar uma cadeia de caracteres de texto na frente do controle para solicitar o usuário. Digite o seguinte texto na frente do controle de entrada na janela HTML do WebForm1:

    Selecione o arquivo de imagem para carregar no servidor:

Adicionar um controle button

  1. Na janela HTML do WebForm1, adicione o seguinte código entre as marcas de abertura e fechamento <form> , após o código de controle de entrada:

    <asp:button id="btnUpload" type="submit" text="Upload" runat="server"></asp:button>
    
  2. Esse controle button é usado para carregar o arquivo especificado no controle De entrada.

Criar um controle painel que contém um único rótulo para exibir a saída

Na janela HTML do WebForm1, adicione o seguinte código entre as marcas de abertura e fechamento <form> , após o código de controle botão:

<asp:Panel ID="frmConfirmation" Visible="False" Runat="server">
    <asp:Label id="lblUploadResult" Runat="server"></asp:Label>
</asp:Panel>

Esse código é usado para exibir a mensagem para indicar se o upload do arquivo foi bem-sucedido. Para exibir essa saída, é criado um controle painel que contém um único rótulo.

Carregar o arquivo no evento Botão Clicar

O código nesta seção recupera o arquivo do sistema de arquivos local, verifica se o arquivo já existe no servidor e, em seguida, carrega o arquivo no site da Web. Para adicionar esse código, siga estas etapas:

  1. Clique duas vezes no botão Carregar criado na seção Adicionar um botão de controle deste artigo para criar um manipulador de eventos para o Click evento do controle de botão.

  2. Adicione o seguinte código na parte superior da janela Código :

    using System.IO;
    
  3. Adicione o seguinte código ao manipulador de Click eventos para o botão Carregar :

    string strFileName;
    string strFilePath;
    string strFolder;
    strFolder = Server.MapPath("./");
    // Retrieve the name of the file that is posted.
    strFileName = oFile.PostedFile.FileName;
    strFileName = Path.GetFileName(strFileName);
    if(oFile.Value != "")
    {
        // Create the folder if it does not exist.
        if(!Directory.Exists(strFolder))
        {
            Directory.CreateDirectory(strFolder);
        }
        // Save the uploaded file to the server.
        strFilePath = strFolder + strFileName;
        if(File.Exists(strFilePath))
        {
            lblUploadResult.Text = strFileName + " already exists on the server!";
        }
        else
        {
            oFile.PostedFile.SaveAs(strFilePath);
            lblUploadResult.Text = strFileName + " has been successfully uploaded.";
        }
    }
    else
    {
        lblUploadResult.Text = "Click 'Browse' to select the file to upload.";
    }
    // Display the result of the upload.
    frmConfirmation.Visible = true;
    
  4. No menu Arquivo , clique em Salvar Tudo.

Verifique se a ação de carregamento funciona

  1. No menu Depuração , clique em Iniciar para compilar e para executar o aplicativo. Uma caixa de texto e um botão de comando aparecem.

  2. Digite o caminho do arquivo de imagem na caixa de texto ou clique em Procurar para localizar o arquivo de imagem no computador local.

  3. Clique em Carregar para enviar o arquivo para o servidor. Se o arquivo for exclusivo, você receberá uma mensagem de que o upload foi bem-sucedido. Se o arquivo já existir no servidor, você receberá uma mensagem apropriada. Os arquivos que você carrega deste aplicativo são salvos no local: C:\inetpub\wwwroot\ApplicationName no disco rígido local.

  4. Para fazer esse aplicativo funcionar no .NET Framework, permita o acesso do Controle Total ao usuário ASPNET. Para fazer isso, siga estas etapas:

    1. Localize a pasta de aplicativo no Windows Explorer. O caminho é C:\inetpub\wwwroot\ApplicationName.

    2. Clique com o botão direito do mouse na pasta ApplicationName e clique em Propriedades. A caixa de diálogo Propriedades do ApplicationName é exibida.

    3. Clique na guia Segurança.

    4. Clique em Adicionar. A caixa de diálogo Selecionar Usuários ou Grupos é exibida.

      Observação

      No Visual Studio, a caixa de diálogo Selecionar Usuários, Computadores ou Grupos é exibida.

    5. Digite ASPNET na caixa Inserir os nomes de objeto para selecionar e clique em OK.

    6. Na caixa de diálogo Propriedades do ApplicationName , clique no usuário ASPNET na lista Nomes de usuário ou grupo .

    7. Em Permitir, clique para selecionar a caixa Controle Completo marcar e clique em OK.

Lista de código completa

  • WebForm1.aspx

    <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false"
       Inherits="Howto.WebForm1" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
       <HEAD>
          <title>WebForm1</title>
          <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
          <meta name="CODE_LANGUAGE" Content="C#">
          <meta name="vs_defaultClientScript" content="JavaScript">
          <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
       </HEAD>
       <body MS_POSITIONING="GridLayout">
          <form id="Form1" method="post" runat="server" EncType="multipart/form-data" action="WebForm1.aspx">
             Image file to upload to the server: <INPUT id="oFile" type="file" runat="server" NAME="oFile">
             <asp:button id="btnUpload" type="submit" text="Upload" runat="server"></asp:button>
             <asp:Panel ID="frmConfirmation" Visible="False" Runat="server">
                <asp:Label id="lblUploadResult" Runat="server"></asp:Label>
             </asp:Panel>
          </form>
       </body>
    </HTML>
    
  • WebForm1.aspx.cs

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.IO;
    namespace **ApplicationName** {
    /// <summary>
    /// Summary description for WebForm1.
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Button btnUpload;
        protected System.Web.UI.WebControls.Label lblUploadResult;
        protected System.Web.UI.WebControls.Panel frmConfirmation;
        protected System.Web.UI.HtmlControls.HtmlInputFile oFile;
    
        private void Page_Load(object sender, System.EventArgs e)
        {
        // Put user code to initialize the page here
        }
        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
        // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            InitializeComponent();
            base.OnInit(e);
        }
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.btnUpload.Click += new System.EventHandler(this.btnUpload_Click);
            this.Load += new System.EventHandler(this.Page_Load);
        }
        #endregion
    
        private void btnUpload_Click(object sender, System.EventArgs e)
        {
            string strFileName;
            string strFilePath;
            string strFolder;
            strFolder = Server.MapPath("./");
            // Get the name of the file that is posted.
            strFileName = oFile.PostedFile.FileName;
            strFileName = Path.GetFileName(strFileName);
            if(oFile.Value != "")
            {
                // Create the directory if it does not exist.
                if(!Directory.Exists(strFolder))
                {
                    Directory.CreateDirectory(strFolder);
                }
                // Save the uploaded file to the server.
                strFilePath = strFolder + strFileName;
                if(File.Exists(strFilePath))
                {
                    lblUploadResult.Text = strFileName + " already exists on the server!";
                }
                else
                {
                    oFile.PostedFile.SaveAs(strFilePath);
                    lblUploadResult.Text = strFileName + " has been successfully uploaded.";
                }
            }
            else
            {
                lblUploadResult.Text = "Click 'Browse' to select the file to upload.";
            }
            // Display the result of the upload.
            frmConfirmation.Visible = true;
        }
    }
    

Observação

O código gerado no Visual Studio é diferente do código gerado no Visual Studio .NET.

Solução de problemas

  1. Abra o arquivo Machine.config localizado em seu computador na pasta CONFIG no caminho em que você instalou o runtime.
  2. Localize a <processModel> seção no arquivo Machine.config , altere o user e os password atributos para o nome e a senha do usuário em quem você deseja W3wp.exe ou Aspnet_wp.exe para executar e salve o arquivo Machine.config .
  3. Localize a pasta Arquivos de ASP.NET Temporários localizada na pasta CONFIG . Clique com o botão direito do mouse na pasta Arquivos de ASP.NET Temporário e clique em Propriedades.
  4. Na caixa de diálogo Propriedades de Arquivos ASP.NET Temporárias , clique na guia Segurança .
  5. Clique em Avançado.
  6. Na caixa de diálogo Configurações de Controle de Acesso para Arquivos de ASP.NET Temporários, clique em Adicionar.
  7. Na caixa de diálogo, digite o nome de usuário na caixa Nome e clique em OK.
  8. Na caixa de diálogo Entrada de Permissão para Arquivos ASP.NET Temporários , dê ao usuário permissões completas e clique em OK para fechar a caixa de diálogo Propriedades de Arquivos de ASP.NET Temporária .

Referências