Compartilhar via


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

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

Versão original do produto: Visual C#, ASP.NET, Serviços de Informações da Internet
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 é validado se 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 o software recomendado e a infraestrutura de rede de que você precisa:

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

Criar um formulário da Web ASP.NET

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

  2. No menu Arquivo , aponte para Novoe clique em Projeto.

    Observação

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

  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 de Language. Em Modelos, clique em ASP.NET Site.

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

    Observação

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

    Por padrão, WebForm1.aspx é criado.

    Observação

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

  5. No menu Exibir, clique em Código-fonte HTML.

    Observação

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

Modificar os atributos do formulário

Na janela HTML do WebForm1, substitua a tag form pelo seguinte:

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

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

Adicione 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 tags de abertura e fechamento<form>:

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

    Esse 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 ao usuário. Digite o seguinte texto na frente do controle Input na janela HTML do WebForm1:

    Selecione o arquivo de imagem a ser carregado 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 Input.

Criar um controle Panel que contenha 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 Button:

<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 Panel que contém um único rótulo.

Carregar o arquivo no evento Clique no botão

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

  1. Clique duas vezes no botão Carregar que foi criado na seção Adicionar um controle de botão 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 upload funciona

  1. No menu Depurar , clique em Iniciar para compilar e executar o aplicativo. Uma caixa de texto e um botão de comando são exibidos.

  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 informando 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 de Controle Total ao usuário ASPNET . Para fazer isso, siga estas etapas:

    1. Localize a pasta do 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 Nome do Aplicativo é 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 a serem selecionados e clique em OK.

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

    7. Em Permitir, clique para marcar a caixa de seleção Controle Total e clique em OK.

Listagem de código completo

  • 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 os user atributos e para password o nome e a senha do usuário que você deseja que W3wp.exe ou Aspnet_wp.exe seja executado e salve o arquivo Machine.config .
  3. Localize a pasta Temporary ASP.NET Files localizada na pasta CONFIG . Clique com o botão direito do mouse na pasta Arquivos ASP.NET Temporários e clique em Propriedades.
  4. Na caixa de diálogo Propriedades de arquivos temporários do ASP.NET, clique na guia Segurança.
  5. Clique em Avançado.
  6. Na caixa de diálogo Configurações de controle de acesso para arquivos 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, conceda ao usuário permissões completas e clique em OK para fechar a caixa de diálogo Propriedades de Arquivos ASP.NET Temporários.

Referências