Jak uložit soubor na webovém serveru v prostředí ASP.SÍŤ pomocí aplikace Visual C#.NET

Překlady článku Překlady článku
ID článku: 323246 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento podrobný článek popisuje, jak uložit soubor Webový server pomocí aplikace Visual C#.NET. V tomto článku můžete vytvořit Microsoft PROSTŘEDÍ ASP.NET (WebForm1.aspx) a souboru jeho související kódem na pozadí Uložení souborů do adresáře s názvem (WebForm1.aspx.cs) Data.


Vytvoření ASP.NET aplikací

V aplikaci Microsoft Visual Studio.NETTO, postupujte podle následujících kroků vytvořte Nová aplikace uložení souborů na server WWW:
  1. Spusťte aplikaci Visual Studio.NET.
  2. V Soubor příkaz Novýa klepněte na tlačítko Projekt.
  3. V Nový projekt Dialogové okno, klepněte na tlačítko Visual C# projekty ve skupinovém rámečku Typy projektůa klepněte na tlačítko PROSTŘEDÍ ASP.NET webové aplikace ve skupinovém rámečku Šablony.
  4. V Umístění Zadejte adresu URL pro vytvoření projektu. V tomto příkladu zadejte následující příkaz:http://localhost/CSharpUpload, který vytvoří výchozí název projektu CSharpUpload. Všimněte si, že načtení souboru WebForm1.aspx Návrhář zobrazení sady Visual Studio.NET.

Vytvoření datového adresáře

Po vytvoření aplikace, vytvoření datového adresáře Odeslané soubory, který bude přijímat. Po vytvoření tohoto adresáře, je také třeba Nastavte oprávnění k zápisu pro účet ASPNET pracovníka.
  1. V okně Průzkumník řešení sady Visual Studio.NET, Klepněte pravým tlačítkem myši CSharpUpload, přejděte na příkaz Přidata klepněte na tlačítko Nová složka. Novou složku s názvem NewFolder1 je standardně vytvořen.
  2. Chcete-li změnit název složky Data, klepněte pravým tlačítkem myši NewFolder1, klepněte na tlačítko Přejmenovata potom zadejte Data.
  3. Spusťte Průzkumníka Windows a vyhledejte soubor dat systémovou složku, kterou jste vytvořili v kroku 2. Ve výchozím nastavení je složka umístěna v následující složky:
    C:\Inetpub\wwwroot\CSharpUpload\Data
  4. Ke změně zabezpečení nastavení udělit oprávnění k zápisu do adresáře Data klepněte pravým tlačítkem myši Dataa klepněte na tlačítko Vlastnosti.
  5. V Vlastnosti dat Dialogové okno, klepněte Zabezpečení a potom na kartu Přidat.
  6. V Vyberte uživatele nebo skupiny Dialogové okno Klepněte ASPNET účet a klepněte na tlačítko Přidat. Klepněte na tlačítko OK Zavřete Vyberte uživatele nebo skupiny Dialogové okno pole.
  7. Klepněte (účet) aspnet_wpnázev_počítače\ASPNET) účet a klepněte na něj Povolit Zaškrtněte políčka pro následující oprávnění:

    • Číst a spouštět
    • Zobrazovat obsah složky
    • Pro čtení
    • Zápis

    Zrušte všechny ostatní Povolit a Odepřít Zaškrtávací políčka.
  8. Klepněte na tlačítko OK Zavřete Vlastnosti dat Dialogové okno. Změnili jste úspěšně datového adresáře oprávnění přijmout uživatele ukládaným souborům.

Upravte stránku WebForm1.aspx

Upravit kód HTML souboru WebForm1.aspx povolení uživatelů Chcete-li uložit soubory, postupujte takto:
  1. Vraťte se do otevřené instance aplikace Visual Studio.NET. WebForm1.aspx by měl být otevřen v okně Návrhář.
  2. Zobrazení zdrojového kódu HTML stránky WebForm1.aspx Klepněte pravým tlačítkem myši WebForm1.aspx v okně Návrhář a klepněte na tlačítko Zobrazení zdrojového kódu HTML.
  3. Vyhledejte následující kód HTML, který obsahuje<form>značka:</form>
    <form id="Form1" method="post" runat="server">
    					
  4. Přidat enctype = "multipart/form-data" název hodnota atributu<form>značka takto:</form>
    <form id="Form1" method="post" enctype="multipart/form-data" runat="server">
    					
  5. Po zahájení<form>značka, přidejte následující kód:</form>
    <INPUT type=file id=File1 name=File1 runat="server" />
    <br>
    <input type="submit" id="Submit1" value="Upload" runat="server" />
    					
  6. Ověřte, zda kód HTML<form>Zobrazení značky:</form>
    <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>
    					

Přidat kód uložení do souboru WebForm1.aspx.cs kódem na pozadí

Upravit soubor WebForm1.aspx.cs kódem na pozadí, tak že přijímá odesílaných dat, postupujte takto:
  1. V Zobrazení nabídky, klepněte na tlačítko Návrh.
  2. Poklepejte na položku Odeslat. Visual Studio otevře soubor WebForm1.aspx.cs kódem na pozadí a automaticky generuje následující kód metody:
    private void Submit1_ServerClick(object sender, System.EventArgs e)
    {
    
    
    }
  3. Ověřte, že následující kód existuje na úrovni třídy soubor WebForm1.cs:
    protected System.Web.UI.HtmlControls.HtmlInputFile File1;
    protected System.Web.UI.HtmlControls.HtmlInputButton Submit1;
    						
    Pokud tento kód v souboru neexistuje, přidejte kód do souboru po následující řádek:
    public class WebForm1 : System.Web.UI.Page
    {
    					
  4. Vyhledejte následující kód:
    private void Submit1_ServerClick(object sender, System.EventArgs e)
    {
    					
  5. Stisknutím klávesy ENTER přidat prázdný řádek a potom přidejte následující kód:
    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.");
    }
    Tento kód nejprve ověří, že soubor nebyl načten. Pokud nebyl žádný soubor vybraná, zobrazí se zpráva "Vyberte soubor k odeslání". Pokud platné odeslání souboru, název souboru je extrahován pomocí System.IO obor názvů a jeho cíl je sestaven v Uložit jako cesta. Po konečné místo určení je znám, je soubor uložen ve pomocí File1.PostedFile.SaveAs Metoda. Jakákoliv výjimka je pohoda a zpráva výjimky je zobrazí na obrazovce.
  6. Ověřte, zda Submit1 podprogram zobrazí takto:
    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.");
    	}
    }

Testování aplikace

Vytvoření aplikace Visual Studio.ČISTÉ řešení a otestovat aplikace, postupujte takto:
  1. V Sestavení nabídky, klepněte na tlačítko Řešení.
  2. V aplikaci Solution Explorer klepněte pravým tlačítkem myši WebForm1.aspxa klepněte na tlačítko Zobrazit v prohlížeči.
  3. Po WebForm1.aspx otevře v prohlížeči, klepněte na tlačítko Procházet.
  4. V Zvolte soubor Dialogové okno, vyberte soubor, který je menší než 4 megabajty (MB), a potom klepněte na tlačítko Otevřít.
  5. Chcete-li soubor uložit, klepněte na tlačítko Odeslat. Všimněte si, že se soubor uloží na server WWW a Zobrazí se zpráva "soubor nebyl odeslán".
  6. Vrátit do otevřené instance programu Průzkumník Windows a pak Vyhledejte adresář Data.
  7. Ověřte, že Data odeslání souboru adresář.

Uložit větší soubory

Ve výchozím nastavení prostředí ASP.NET povoluje pouze soubory, které jsou 4 096 kilobajtů (KB) (nebo 4 MB) nebo méně mohly být odeslány na webový server. Odešlete větší soubory, je nutné změnit maxRequestLength Parametr <httpruntime></httpruntime> oddíl v souboru Web.config.

Poznámka: Když maxRequestLength Atribut byl nastaven v souboru Machine.config a pak je požadavek zaúčtováno (například nahrání souboru), která překračuje hodnotu z maxRequestLength, vlastní chybovou stránku nelze zobrazit. Místo toho Microsoft Aplikace Internet Explorer zobrazí chybu "Nelze najít server nebo DNS" zpráva.

Chcete-li změnit toto nastavení pro všechny počítače a nejen tohoto prostředí ASP.NET aplikací, je nutné upravit souboru Machine.config. soubor.

Standardně <httpruntime></httpruntime> prvek je nastaven na hodnotu následujících parametrů souboru Machine.config. soubor:
<httpRuntime 
executionTimeout="90" 
maxRequestLength="4096"
useFullyQualifiedRedirectUrl="false" 
minFreeThreads="8" 
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100"
/>
				
Soubor Machine.config umístěn v \Systém Kořenový adresář\Microsoft.NET\Framework\Verze ČísloAdresář \Config.


Úplný výpis kódu

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.");
			}
		}
	}
}
	

Další informace

Maximální velikost uložení je teoreticky poměrně velké. Avšak z důvodu ASP.Sledování ČISTÉ zdraví, nelze odeslat velmi velké soubory ASP.NET. ASP.Má ČISTÉ pracovní proces virtuálního adresového prostoru 2 gigabajtů (GB). Však ASP.ČISTÉ pracovní proces používá pouze o něco více než 1 GB z důvodu fragmentace zdraví sledování a paměti.

Během procesu odesílání, ASP.NET načte do paměti celý soubor před uživateli můžete uložit soubor na disk. Proto může proces z důvodu recyklace memoryLimit atribut processModel značka v souboru Machine.config. Na memoryLimit atribut určuje procento fyzické paměti, která PROSTŘEDÍ ASP.ČISTÉ pracovní proces může výfukových plynů než dojde automaticky Recyklovat. Recyklace zabrání ASP způsobuje nevracení paměti.NET zhroucení nebo na přestat reagovat.

Kromě toho další faktory hrají roli v maximální velikost souboru pro uložení. Tyto faktory zahrnují dostupné paměti volného místa na disku, rychlost procesoru a aktuální síťové přenosy. S pravidelné přenosy souborů odesílaných společnosti Microsoft doporučuje použít maximální velikost souboru v rozsahu 10 až 20 megabajtů (MB). Když odešlete zřídka soubory, maximální velikost souboru může být 100 MB.

Poznámka: Můžete odeslat soubory, které jsou větší než 100 MB v prostředí ASP.NET. Společnost Microsoft doporučuje řídit se maximální velikost uložení uvedené v tomto článku. Určit přesnější velikosti souborů, zátěžové testování v počítačích, které jsou podobné ty, které budou proveďte použité při výrobě.

Můžete si všimnout následujících chybových zpráv, pokud dojde k omezení velikosti souborů v průběhu procesu ukládání souboru:
  • Stránku nelze zobrazí.
  • Je serverová aplikace Není k dispozici
    V protokolu událostí bude podobná chybová zpráva následující:

    Program aspnet_wp.exe (PID:PIDNumber) byl recyklován, protože paměť překročení spotřeby SizeLimit MB (Procento k dispozici procent RAM).

  • Výjimka typu System.OutOfMemoryException byla vyvolána.
Také je možné velmi pomalu dochází nahrávání. Pokud sledujete proces Aspnet_wp.exe ve Správci úloh systému Windows, zjistíte, paměť delta změny 64 KB každých 1 až 2 sekundy. V závislosti na velikosti v souboru ASP může způsobit toto zpoždění.ČISTÉ pracovní proces z důvodu recyklace Chyba responseDeadlock.

Odkazy

Další informace naleznete na následující společnosti Microsoft Webech Developer Network (MSDN);
<httpruntime>prvek</httpruntime>
http://msdn2.microsoft.com/en-us/library/e1f13641 (vs.71) .aspx

VSTUPNÍ prvek | vstupní objekt
http://msdn.microsoft.com/en-us/library/ms535260 (VS.85) .aspx

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

Třída HtmlInputFile
http://msdn2.microsoft.com/en-us/library/System.web.UI.htmlcontrols.htmlinputfile (vs.71) .aspx

Vlastnost HtmlInputFile.PostedFile
http://msdn2.microsoft.com/en-us/library/System.web.UI.htmlcontrols.htmlinputfile.postedfile (vs.71) .aspx

Vlastnosti

ID článku: 323246 - Poslední aktualizace: 19. května 2011 - Revize: 7.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Klíčová slova: 
kbhowtomaster kbmt KB323246 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:323246

Dejte nám zpětnou vazbu

 

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