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
Inicie o Visual Studio .NET ou o Visual Studio.
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.
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.
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>
.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
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.
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
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 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:
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.Adicione o seguinte código na parte superior da janela Código :
using System.IO;
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;
No menu Arquivo , clique em Salvar Tudo.
Verifique se a ação de carregamento funciona
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.
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 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.Para fazer esse aplicativo funcionar no .NET Framework, permita o acesso do Controle Total ao usuário ASPNET. Para fazer isso, siga estas etapas:
Localize a pasta de 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 ApplicationName é 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 para selecionar e clique em OK.
Na caixa de diálogo Propriedades do ApplicationName , clique no usuário ASPNET na lista Nomes de usuário ou grupo .
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
- 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 ouser
e ospassword
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 . - 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.
- Na caixa de diálogo Propriedades de Arquivos ASP.NET Temporárias , clique na guia Segurança .
- Clique em Avançado.
- Na caixa de diálogo Configurações de Controle de Acesso para Arquivos de 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 , 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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de