Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
Inicie o Visual Studio .NET ou o Visual Studio.
No menu Arquivo , aponte para Novoe clique em Projeto.
Observação
No Visual Studio, aponte para Novo no menu Arquivo e clique em Site.
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.
Na caixa Local, digite o seguinte local e clique em OK:
http://WebServerName/ApplicationNameObservaçã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>.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
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.
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
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>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:
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
Clickevento do controle de botão.Adicione o seguinte código na parte superior da janela Código :
using System.IO;Adicione o seguinte código ao manipulador de
Clickeventos 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;No menu Arquivo , clique em Salvar Tudo.
Verifique se a ação de upload funciona
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.
Digite o caminho do arquivo de imagem na caixa de texto ou clique em Procurar para localizar o arquivo de imagem no computador local.
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\ApplicationNameno disco rígido local.Para fazer esse aplicativo funcionar no .NET Framework, permita o acesso de Controle Total ao usuário ASPNET . Para fazer isso, siga estas etapas:
Localize a pasta do aplicativo no Windows Explorer. O caminho é
C:\inetpub\wwwroot\ApplicationName.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.
Clique na guia Segurança .
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.
Digite ASPNET na caixa Inserir os nomes de objeto a serem selecionados e clique em OK.
Na caixa de diálogo Propriedades do ApplicationName, clique no usuário ASPNET na lista Nomes de grupo ou de usuário.
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
- Abra o arquivo Machine.config localizado em seu computador na pasta CONFIG no caminho em que você instalou o runtime.
- Localize a
<processModel>seção no arquivo Machine.config , altere osuseratributos e parapasswordo 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 . - 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.
- Na caixa de diálogo Propriedades de arquivos temporários do ASP.NET, clique na guia Segurança.
- Clique em Avançado.
- Na caixa de diálogo Configurações de controle de acesso para arquivos ASP.NET temporários, clique em Adicionar.
- Na caixa de diálogo, digite o nome de usuário na caixa Nome e clique em OK.
- 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.