Como carregar um arquivo em um servidor Web no ASP.NET usando Visual translation from VPE for Csharp .NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 323246 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo passo a passo descreve como carregar um arquivo em um servidor Web usando o Visual translation from VPE for Csharp. NET. Neste artigo, você criar um arquivo do Microsoft ASP.NET (WebForm1.aspx) e seu arquivo code-behind relacionados (WebForm1.aspx.cs) para carregar arquivos para um diretório é chamado de dados.


Criar um aplicativo ASP.NET

No Microsoft Visual Studio. NET, siga estas etapas para criar um novo aplicativo para carregar arquivos para o servidor Web:
  1. Inicie o Microsoft Visual Studio NET..
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Na caixa de diálogo New Project , clique em projetos do Visual translation from VPE for Csharp em Tipos de projeto e, em seguida, clique em ASP.NET Web Application em modelos .
  4. Na caixa Location , digite a URL para criar o projeto. Neste exemplo, digite http://localhost/CSharpUpload , que cria o nome de projeto padrão de CSharpUpload. Observe que o arquivo WebForm1.aspx é carregado na exibição de designer do Visual Studio. NET.

Criar o diretório de dados

Depois de criar o aplicativo, você criar o diretório de dados que aceitará arquivos carregados. Depois de criar esse diretório, você também deve definir permissões de gravação para a conta ASPNET do operador.
  1. Na janela Solution Explorer do Visual Studio .NET, clique com o botão direito do mouse CSharpUpload , aponte para Add e, em seguida, clique em Nova pasta . Por padrão, uma nova pasta é nomeada NewFolder1 é criada.
  2. Para alterar o nome da pasta para dados, clique com o botão direito do mouse NewFolder1 , clique em Renomear e, em seguida, digite dados .
  3. Inicie o Windows Explorer e localize a pasta de sistema de arquivo de dados que você criou na etapa 2. Por padrão, esta pasta está localizada na seguinte pasta:
    C:\Inetpub\wwwroot\CSharpUpload\Data
  4. Para alterar a segurança as configurações para conceder escrever permissões para o diretório dados, clique com o botão direito do mouse em dados e, em seguida, clique em Propriedades .
  5. Na caixa de diálogo Propriedades de dados , clique na guia segurança e, em seguida, clique em Adicionar .
  6. Na caixa de diálogo Selecionar usuários ou grupos , clique na conta ASPNET e clique em Adicionar . Clique em OK para fechar a caixa de diálogo Selecionar usuários ou grupos .
  7. Clique no aspnet_wp conta (computername \ASPNET) conta e, em seguida, clique para selecionar as caixas de seleção Permitir para as seguintes permissões:

    • ler e executar
    • Listar conteúdo de pastas
    • leitura
    • gravar

    Clique para desmarcar qualquer outras Permitir e Negar caixas de seleção.
  8. Clique em OK para fechar a caixa de diálogo Propriedades de dados . Você modificou as permissões de diretório de dados para aceitar arquivos do usuário carregado com êxito.

Modificar a página WebForm1.aspx

Para modificar o código HTML do arquivo WebForm1.aspx para permitir que os usuários carreguem arquivos, execute essas etapas:
  1. Retornar para a instância aberta do Visual Studio. NET. WebForm1.aspx deve estar aberto na janela de Designer.
  2. Para exibir o código fonte HTML da página WebForm1.aspx, clique WebForm1.aspx na janela de Designer com o botão direito do mouse e, em seguida, clique em Exibir código fonte HTML .
  3. Localize o seguinte código HTML, que contém a marca <form>:
    <form id="Form1" method="post" runat="server">
    					
  4. Adicionar o enctype = "multipart/form-data" atributo de nome-valor para a marca <form> da seguinte maneira:
    <form id="Form1" method="post" enctype="multipart/form-data" runat="server">
    					
  5. Após a abertura <form> marca, adicione o seguinte código:
    <INPUT type=file id=File1 name=File1 runat="server" />
    <br>
    <input type="submit" id="Submit1" value="Upload" runat="server" />
    					
  6. Verifique se o HTML <form> marca aparece da seguinte maneira:
    <form id="Form1" method="post" enctype="multipart/form-data" runat="server">
    <INPUT type=file id=File1 name=File1 runat="server" />
    <br>
    <input type="submit" id="Submit1" value="Upload" runat="server" />
    </form>
    					

Adicione o código de carregamento ao arquivo de code-behind WebForm1.aspx.cs

Para modificar o arquivo de code-behind WebForm1.aspx.cs para que ele aceite os dados carregados, execute as seguintes etapas:
  1. No menu Exibir , clique em criar .
  2. Clique duas vezes em carregar . O Visual Studio abre o arquivo de code-behind WebForm1.aspx.cs e gera automaticamente o código de método a seguir:
    private void Submit1_ServerClick(object sender, System.EventArgs e)
    {
    
    
    }
  3. Verifique se o código a seguir existe no nível de classe do arquivo WebForm1.cs:
    protected System.Web.UI.HtmlControls.HtmlInputFile File1;
    protected System.Web.UI.HtmlControls.HtmlInputButton Submit1;
    						
    se esse código não existir no arquivo, adicione o código para o arquivo após a seguinte linha:
    public class WebForm1 : System.Web.UI.Page
    {
    					
  4. Localize o código a seguir:
    private void Submit1_ServerClick(object sender, System.EventArgs e)
    {
    					
  5. Pressione ENTER para adicionar uma linha em branco e, em seguida, adicione o seguinte código:
    if( ( File1.PostedFile != null ) && ( File1.PostedFile.ContentLength > 0 ) )
    {
    	string fn = System.IO.Path.GetFileName(File1.PostedFile.FileName);
    	string SaveLocation = Server.MapPath("Data") + "\\" +  fn;
    	try
    	{
    		File1.PostedFile.SaveAs(SaveLocation);
    		Response.Write("The file has been uploaded.");
    	}
    	catch ( Exception ex )
    	{
    		Response.Write("Error: " + ex.Message);
    		//Note: Exception.Message returns a detailed message that describes the current exception. 
    		//For security reasons, we do not recommend that you return Exception.Message to end users in 
    		//production environments. It would be better to put a generic error message. 
    	}
    }
    else
    {
    	Response.Write("Please select a file to upload.");
    }
    este código primeiro verifica que um arquivo foi carregado. Se nenhum arquivo foi selecionado, você receberá a mensagem "Selecione um arquivo para carregar". Se um arquivo válido é carregado, seu nome de arquivo é extraído usando o namespace System.IO e seu destino é montado em um caminho de Salvar como . Depois que o destino final é conhecido, o arquivo é salvo usando o método File1.PostedFile.SaveAs . Qualquer exceção é interceptada e a mensagem de exceção é exibida na tela.
  6. Verifique se a sub-rotina Submit1 aparece da seguinte maneira:
    private void Submit1_ServerClick(object sender, System.EventArgs e)
    {
    	if( ( File1.PostedFile != null ) && ( File1.PostedFile.ContentLength > 0 ) )
    	{
    		string fn = System.IO.Path.GetFileName(File1.PostedFile.FileName);
    		string SaveLocation = Server.MapPath("Data") + "\\" +  fn;
    		try
    		{
    			File1.PostedFile.SaveAs(SaveLocation);
    			Response.Write("The file has been uploaded.");
    		}
    		catch ( Exception ex )
    		{
    			Response.Write("Error: " + ex.Message);
    			//Note: Exception.Message returns detailed message that describes the current exception. 
    			//For security reasons, we do not recommend you return Exception.Message to end users in 
    			//production environments. It would be better just to put a generic error message. 
    		}
    	}
    	else
    	{
    		Response.Write("Please select a file to upload.");
    	}
    }

Testar o aplicativo

Para criar sua solução do Visual Studio .NET e testar o aplicativo, execute estas etapas:
  1. No menu Build , clique em Build Solution .
  2. No Solution Explorer, clique com o botão direito do mouse em WebForm1.aspx e, em seguida, clique em View in Browser .
  3. Depois de WebForm1.aspx abre no navegador, clique em Procurar .
  4. Na caixa de diálogo Escolher arquivo , selecione um arquivo menor do que 4 megabytes (MB) e, em seguida, clique em Abrir .
  5. Para carregar o arquivo, clique em carregar . Observe que carrega o arquivo para o servidor Web e que você recebe a mensagem "O arquivo foi carregado".
  6. Retornar para a instância aberta do Windows Explorer e localize o diretório de dados.
  7. Verificar que o arquivo foi carregado para os dados do diretório.

Carregar arquivos maiores

Por padrão, o ASP.NET permite apenas arquivos que estão 4.096 kilobytes (KB) (ou 4 MB) ou menos a serem carregados para o servidor Web. Para carregar arquivos maiores, você deve alterar o parâmetro maxRequestLength do <httpruntime> seção no arquivo Web.config.

Observação Quando o atributo maxRequestLength está definido no arquivo Machine.config e, em seguida, uma solicitação é lançada (por exemplo, um carregamento de arquivo) que excede o valor da maxRequestLength , uma página de erro personalizada não pode ser exibida. Em vez disso, o Microsoft Internet Explorer exibirá uma mensagem de erro "Não encontrado servidor ou DNS".

Se você deseja alterar esta configuração para todo o computador e não apenas esse aplicativo ASP.NET, você deve modificar o Machine.config arquivo.

Por padrão, o <httpruntime> elemento é definido como parâmetros a seguir em Machine.config o arquivo:
<httpRuntime 
executionTimeout="90" 
maxRequestLength="4096"
useFullyQualifiedRedirectUrl="false" 
minFreeThreads="8" 
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100"
/>
				
Machine.config o arquivo está localizado no \ System Root \Microsoft.NET\Framework\ Version Number \Config diretório.


Listagem de código completo

WebForm1.aspx

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="CSharpUpload.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
  <HEAD>
    <title>WebForm1</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
    <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" enctype="multipart/form-data" runat="server">
<INPUT type=file id=File1 name=File1 runat="server" >
<br>
<input type="submit" id="Submit1" value="Upload" runat="server" NAME="Submit1">
</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;

namespace CSharpUpload
{
	/// <summary>
	/// Summary description for WebForm1.
	/// </summary>
	public class WebForm1 : System.Web.UI.Page
	{
		protected System.Web.UI.HtmlControls.HtmlInputFile File1;
		protected System.Web.UI.HtmlControls.HtmlInputButton Submit1;
	
		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.Submit1.ServerClick += new System.EventHandler(this.Submit1_ServerClick);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion

		private void Submit1_ServerClick(object sender, System.EventArgs e)
		{
			if( ( File1.PostedFile != null ) && ( File1.PostedFile.ContentLength > 0 ) )
			{
				string fn = System.IO.Path.GetFileName(File1.PostedFile.FileName);
				string SaveLocation = Server.MapPath("Data") + "\\" +  fn;
				try
				{
					File1.PostedFile.SaveAs(SaveLocation);
					Response.Write("The file has been uploaded.");
				}
				catch ( Exception ex )
				{
					Response.Write("Error: " + ex.Message);
					//Note: Exception.Message returns a detailed message that describes the current exception. 
					//For security reasons, we do not recommend that you return Exception.Message to end users in 
					//production environments. It would be better to return a generic error message. 
				}
			}
			else
			{
				Response.Write("Please select a file to upload.");
			}
		}
	}
}
	

Mais Informações

Teoricamente, o tamanho de carregamento máximo do arquivo é grande o bastante. No entanto, devido a monitoração de integridade do ASP.NET, você não pode carregar arquivos muito grandes no ASP.NET. O processo do operador do ASP.NET tem um espaço de endereço virtual de 2 gigabytes (GB). No entanto, o processo do operador do ASP.NET usa apenas um pouco mais de 1 GB devido a fragmentação de memória de monitoramento e integridade.

Durante o processo de carregamento, o ASP.NET carrega o arquivo inteiro na memória antes do usuário pode salvar o arquivo para o disco. Portanto, o processo pode reciclar devido o atributo memoryLimit da marca processModel no arquivo Machine.config. O atributo memoryLimit Especifica a porcentagem de memória física que o processo do operador ASP.NET pode esgotar antes o processo de reciclagem automaticamente. Reciclagem impede que vazamentos de memória causando ASP.NET para falhar ou para parar de responder.

Além disso, outros fatores desempenham um papel no tamanho máximo do arquivo que pode ser carregado. Esses fatores incluem a memória disponível, espaço disponível no disco rígido, velocidade do processador e tráfego de rede atual. Com o tráfego normal de arquivos que estão sendo carregados, a Microsoft recomenda que você use um tamanho máximo de arquivo no intervalo de 10 a 20 megabytes (MB). Se você raramente carregar arquivos, o tamanho máximo do arquivo pode ser 100 MB.

Observação Você pode carregar arquivos maiores que 100 MB no ASP.NET. No entanto, a Microsoft recomenda que você siga os tamanhos de carregamento máximo do arquivo que são mencionados neste artigo. Para determinar tamanhos de arquivo mais precisos, execute Enfatize testes em computadores que são semelhantes àqueles que serão usados na produção.

Você pode perceber as seguintes mensagens de erro se você encontrar os limites de tamanho de arquivo durante o processo de carregamento de arquivos:
  • A página não pode ser exibida.
  • Aplicativo do servidor não está disponível
    No log de eventos, a mensagem de erro será semelhante à seguinte:

    aspnet_wp.exe (PID: PIDNumber) foi reciclado porque consumo de memória excedeu SizeLimit MB (Percentage por cento de RAM disponível).

  • Exceção do tipo System.OutOfMemoryException foi lançada.
Você também pode encontrar que carregamentos ocorrem muito lentamente. Se você observar o processo Aspnet_wp.exe no Gerenciador de tarefas do Windows, você observará que delta memória muda por 64 KB segundos de 1 a 2. Dependendo do tamanho do arquivo, esse atraso pode tornar o processo de operador do ASP.NET reciclar devido a um erro de responseDeadlock.

Referências

Para obter informações adicionais, visite os seguintes Microsoft Developer Network (MSDN) sites;
elemento <httpruntime>
http://msdn2.microsoft.com/en-us/library/e1f13641(vs.71).aspx

Elemento INPUT | objeto de entrada
http://msdn.microsoft.com/en-us/library/ms535260(VS.85).aspx

Atributo ENCTYPE | Propriedade enctype
http://msdn2.microsoft.com/en-us/library/ms533745.aspx

Classe HtmlInputFile
http://msdn2.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlinputfile(vs.71).aspx

Propriedade HtmlInputFile.PostedFile
http://msdn2.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlinputfile.postedfile(vs.71).aspx

Propriedades

ID do artigo: 323246 - Última revisão: segunda-feira, 21 de maio de 2007 - Revisão: 5.11
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbhowtomaster KB323246 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 323246

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com