Làm th? nào đ? t?i lên m?t t?p tin vào m?t máy ch? Web trong ASP.NET b?ng cách s? d?ng Visual C#.NET

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 323246 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Bài vi?t t?ng bư?c này mô t? cách đ? t?i lên m?t t?p tin đ? m?t máy ch? Web b?ng cách s? d?ng Visual C#.NET. Trong bài này, b?n t?o m?t Microsoft ASP.NET file (WebForm1.aspx) và t?p tin liên quan đ?n m?-đ?ng sau c?a nó (WebForm1.aspx.cs) đ? t?i lên t?p tin vào m?t thư m?c có tên D? li?u.


T?o m?t ASP.NET application

Trong Microsoft Visual Studio.NET, h?y làm theo các bư?c sau đ? t?o ra m?t m?i ?ng d?ng đ? t?i lên t?p tin vào máy ch? Web:
  1. B?t đ?u Microsoft Visual Studio.NET.
  2. Trên các Tệp tr?nh đơn, đi?m đ?n M?i, sau đó b?m Dự án.
  3. Trong các D? án m?i h?p tho?i h?p, b?m vào Visual C# các d? án dư?i Các lo?i d? án, sau đó b?m ASP.NET Web ?ng d?ng dư?i Khuôn mẫu.
  4. Trong các V? trí h?p, g? URL đ? t?o ra các d? án. Ví d? này, g?http://localhost/CSharpUpload, mà t?o ra m?c đ?nh tên d? án c?a CSharpUpload. Lưu ? r?ng WebForm1.aspx file t?i trong các Thi?t k? c?nh Visual Studio.NET.

T?o thư m?c d? li?u

Sau khi b?n t?o các ?ng d?ng, b?n t?o thư m?c d? li?u mà s? ch?p nh?n các t?p tin đư?c t?i lên. Sau khi b?n t?o thư m?c này, b?n ph?i c?ng thi?t l?p quy?n ghi cho tài kho?n ngư?i lao đ?ng ASPNET.
  1. Trong c?a s? gi?i pháp Explorer Visual Studio.NET, Nh?p chu?t ph?i CSharpUpload, đi?m đ?n Thêm, sau đó b?m Thư m?c m?i. Theo m?c đ?nh, m?t thư m?c m?i đư?c đ?t tên NewFolder1 là t?o ra.
  2. Đ? thay đ?i tên thư m?c d? li?u, b?m chu?t ph?i vào NewFolder1, b?m Đ?i tên, r?i g? D? li?u.
  3. B?t đ?u Windows Explorer, và sau đó xác đ?nh v? trí t?p d? li?u h? th?ng thư m?c mà b?n đ? t?o ? bư?c 2. Theo m?c đ?nh, thư m?c này n?m ? thư m?c sau đây:
    C:\Inetpub\wwwroot\CSharpUpload\Data
  4. Đ? thay đ?i b?o m?t thi?t l?p c?p vi?t c?p phép vào thư m?c d? li?u, b?m chu?t ph?i vào D? li?u, sau đó b?m Thu?c tính.
  5. Trong các Thu?c tính d? li?u h?p tho?i h?p, b?m vào các Bảo mật tab, và sau đó nh?p vào Thêm.
  6. Trong các Ch?n ngư?i dùng ho?c nhóm h?p tho?i, b?m vào các ASPNET tài kho?n, và sau đó nh?p vào Thêm. Nh?p vào Ok đ? đóng nh?ng Ch?n ngư?i dùng ho?c nhóm h?p tho?i h?p.
  7. B?m vào các aspnet_wp tài kho?n)computername\ASPNET) tài kho?n, và sau đó b?m vào đ? ch?n các Cho phép ki?m tra xem h?p cho các đi?u kho?n sau đây:

    • Đ?c và th?c thi
    • Danh sách thư m?c n?i dung
    • Đọc
    • Vi?t

    Nh?p vào xoá b?t k? khác Cho phépT? ch?i h?p ki?m.
  8. Nh?p vào Ok đ? đóng nh?ng Thu?c tính d? li?u h?p tho?i. B?n đ? thành công thay đ?i thư m?c d? li?u c?p phép đ? ch?p nh?n ngư?i dùng đ? t?i lên t?p tin.

S?a đ?i trang WebForm1.aspx

Đ? thay đ?i m? HTML c?a các t?p tin WebForm1.aspx đ? cho phép ngư?i dùng t?i t?p tin lên, h?y làm theo các bư?c sau:
  1. Tr? l?i cho trư?ng h?p m? Visual Studio.NET. WebForm1.aspx nên đư?c m? trong c?a s? nhà thi?t k?.
  2. Xem ngu?n HTML c?a trang WebForm1.aspx, Nh?p chu?t ph?i WebForm1.aspx trong c?a s? nhà thi?t k? và sau đó nh?p vào Xem HTML Source.
  3. Xác đ?nh v? trí m? HTML sau, ch?a các<form>t? khóa:</form>
    <form id="Form1" method="post" runat="server">
    					
  4. Thêm các enctype = "multipart/m?u-d? li?u" Tên giá tr? thu?c tính đ?n s?<form>t? khóa như sau:</form>
    <form id="Form1" method="post" enctype="multipart/form-data" runat="server">
    					
  5. Sau khi m?<form>t? khóa, thêm m? sau đây:</form>
    <INPUT type=file id=File1 name=File1 runat="server" />
    <br>
    <input type="submit" id="Submit1" value="Upload" runat="server" />
    					
  6. Xác minh r?ng HTML<form>t? khóa s? xu?t hi?n như sau:</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>
    					

Thêm m? t?i lên t?p tin m? phía sau WebForm1.aspx.cs

Đ? s?a đ?i các t?p tin m? phía sau WebForm1.aspx.cs như v?y mà nó ch?p nh?n các đư?c t?i lên d? li?u, th?c hi?n theo các bư?c sau:
  1. Trên các Xem tr?nh đơn, nh?p vào Thi?t k?.
  2. B?m đúp T?i lên. Visual Studio m? t?p tin m? phía sau WebForm1.aspx.cs và t? đ?ng t?o m? phương pháp sau đây:
    private void Submit1_ServerClick(object sender, System.EventArgs e)
    {
    
    
    }
  3. Ki?m ch?ng r?ng đo?n m? sau t?n t?i ? c?p đ? l?p c?a các t?p tin WebForm1.cs:
    protected System.Web.UI.HtmlControls.HtmlInputFile File1;
    protected System.Web.UI.HtmlControls.HtmlInputButton Submit1;
    						
    N?u m? này không t?n t?i trong t?p tin, thêm m? vào t?p tin sau khi d?ng sau:
    public class WebForm1 : System.Web.UI.Page
    {
    					
  4. Xác đ?nh v? trí m? sau đây:
    private void Submit1_ServerClick(object sender, System.EventArgs e)
    {
    					
  5. H?y b?m ENTER đ? thêm m?t d?ng tr?ng, và sau đó thêm dư?i đây M? s?:
    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.");
    }
    M? này l?n đ?u tiên xác minh r?ng m?t t?p tin đ? đư?c t?i lên. N?u không có t?p tin là b?n đ? ch?n, nh?n đư?c thông báo "H?y ch?n m?t t?p đ? t?i lên". N?u m?t h?p l? t?p tin đư?c t?i lên, tên t?p tin đư?c trích xu?t b?ng cách s? d?ng các System.io không gian tên, và đi?m đ?n c?a nó đư?c l?p ráp trong m?t SaveAs đư?ng d?n. Sau khi các đi?m đ?n cu?i cùng đư?c bi?t đ?n, các t?p tin đư?c lưu b?i b?ng cách s? d?ng các File1.PostedFile.SaveAs phương pháp. B?t k? ngo?i l? b? m?c k?t, và thông đi?p ngo?i l? hi?n th? đư?c trên màn h?nh.
  6. Xác minh r?ng các Submit1 chương tr?nh con s? xu?t hi?n như sau:
    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.");
    	}
    }

Ki?m tra các ?ng d?ng

Đ? xây d?ng c?a b?n Visual Studio.NET gi?i pháp và đ? ki?m tra các ?ng d?ng, h?y làm theo các bư?c sau:
  1. Trên các Xây d?ng tr?nh đơn, nh?p vào Xây d?ng gi?i pháp.
  2. Trong gi?i pháp Explorer, b?m chu?t ph?i vào WebForm1.aspx, sau đó b?m Xem trong tr?nh duy?t.
  3. Sau khi WebForm1.aspx s? m? ra trong tr?nh duy?t, b?m Tr?nh duy?t.
  4. Trong các Ch?n t?p tin h?p tho?i, ch?n m?t t?p tin nh? hơn 4 megabyte (MB), sau đó b?m M?.
  5. Đ? t?i lên t?p, b?m T?i lên. Chú ? r?ng các t?p tin t?i lên máy ch? Web và r?ng b?n nh?n đư?c thông báo "t?p tin đ? đư?c t?i lên".
  6. Tr? l?i cho trư?ng h?p m? Windows Explorer, và sau đó xác đ?nh v? trí thư m?c d? li?u.
  7. Xác minh r?ng các t?p tin đ? đư?c t?i lên d? li?u thư m?c.

T?i t?p tin l?n hơn lên

Theo m?c đ?nh, ASP.NET ch? cho phép t?p đang 4,096 kilobyte (KB) (ho?c 1 MB) ho?c ít hơn đ? đư?c t?i lên máy ch? Web. Đ? t?i lên l?n hơn tác ph?m, b?n ph?i thay đ?i các maxRequestLength tham s? c?a các <httpruntime></httpruntime> ph?n trong Web.config file.

Chú ý Khi các maxRequestLength thu?c tính đư?c đ?t trong t?p tin Machine.config và sau đó yêu c?u là đăng (ví d?, m?t t?i lên t?p tin) mà vư?t quá giá tr? c?a maxRequestLength, m?t l?i tu? ch?nh trang web không th? hi?n th?. Thay vào đó, Microsoft Internet Explorer s? hi?n th? m?t l?i "Không th? t?m th?y máy ch? ho?c DNS" .

N?u b?n mu?n thay đ?i thi?t đ?t này cho t?t c? các máy tính và không ch? này ASP.?ng d?ng m?ng, b?n ph?i s?a đ?i Machine.config t?p tin.

Theo m?c đ?nh, các <httpruntime></httpruntime> nguyên t? đư?c thi?t l?p đ? các tham s? sau đây trong Machine.config t?p tin:
<httpRuntime 
executionTimeout="90" 
maxRequestLength="4096"
useFullyQualifiedRedirectUrl="false" 
minFreeThreads="8" 
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100"
/>
				
Các t?p tin Machine.config này t?a l?c ? các \Các vấn đề Ngư?i ch?\Microsoft.NET\Framework\Phiên bản S?\CONFIG thư m?c.


Danh sách m? hoàn ch?nh

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

THÔNG TIN THÊM

V? l? thuy?t, kích thư?c t?i đa t?p tin t?i lên là khá l?n. Tuy nhiên, v? c?a ASP.NET y t? giám sát, b?n không th? t?i lên r?t l?n tác ph?m trong ASP.NET. ASP.NET công nhân quá tr?nh có m?t không gian đ?a ch? ?o c?a 2 Gigabyte (GB). Tuy nhiên, ASP.Quá tr?nh công nhân NET ch? s? d?ng nhi?u hơn m?t chút hơn 1 GB v? c?a y t? giám sát và b? nh? phân m?nh.

Trong quá tr?nh t?i lên, ASP.NET t?i t?p tin toàn b? trong b? nh? trư?c khi ngư?i dùng có th? lưu t?p vào đ?a. V? v?y, quá tr?nh có th? tái ch? v? các memoryLimit thu?c tính c?a các processModel t? khóa trong t?p tin Machine.config. Các memoryLimit thu?c tính xác đ?nh t? l? ph?n trăm b? nh? v?t l? mà các ASP.Quá tr?nh NET công nhân có th? th?i trư?c khi quá tr?nh là t? đ?ng tái ch?. Tái ch? ngăn r? r? b? nh? gây ASP.NET s?p đ? ho?c đ?n ng?ng đáp ?ng.

Ngoài ra, các y?u t? khác đóng m?t vai tr? các Kích thư?c t?i đa t?p tin có th? đư?c t?i lên. Các y?u t? này bao g?m b? nh? có s?n, không gian đ?a c?ng s?n dùng, t?c đ? x? l?, và hi?n t?i m?ng lư?i giao thông. V?i thư?ng xuyên lưu lư?ng truy c?p các t?p tin đư?c t?i lên, Microsoft khuy?n cáo b?n s? d?ng m?t Kích thư?c t?i đa t?p trong kho?ng 10 đ?n 20 megabyte (MB). N?u b?n hi?m khi t?i lên tác ph?m, kích thư?c t?p t?i đa có th? là 100 MB.

Chú ý B?n có th? t?i lên t?p tin l?n hơn 100 MB trong ASP.NET. Tuy nhiên, Microsoft khuy?n cáo b?n h?y làm theo các kích thư?c t?i đa t?p tin t?i lên đó đ? c?p đ?n trong bài vi?t này. Đ? xác đ?nh chính xác hơn các kích thư?c c?a t?p tin, căng th?ng th? nghi?m trên các máy tính tương t? như nh?ng cái mà s? th?c hi?n đư?c s? d?ng trong s?n xu?t.

B?n có th? nh?n th?y các thông báo l?i sau đây n?u b?n g?p ph?i gi?i h?n kích thư?c t?p trong quá tr?nh t?i lên t?p tin:
  • Trang không th? hi?n th?.
  • Máy ch? ?ng d?ng này Không s?n dùng
    Trong s? ghi s? ki?n, các thông báo l?i s? đư?c tương t? như các sau:

    aspnet_wp.exe (PID:PIDNumber) đ? đư?c tái ch? b?i v? b? nh? tiêu th? vư?t quá các SizeLimit MB (T? l? ph?n trăm ph?n trăm có s?n RAM).

  • Ngo?i l? c?a ki?u System.OutOfMemoryException đư?c ném.
B?n c?ng có th? th?y r?ng t?i lên x?y ra r?t ch?m. N?u b?n xem Aspnet_wp.exe tr?nh trong Windows Task Manager, b?n s? nh?n th?y r?ng các b? nh? delta đ?i b?i 64 KB m?i 1-2 giây. Tùy thu?c vào kích thư?c c?a các t?p tin, s? ch?m tr? này có th? gây ra ASP.NET công nhân quá tr?nh tái ch? v? m?t l?i responseDeadlock.

THAM KH?O

Đ? thêm thông tin, h?y truy c?p Microsoft sau đây Các trang Web c?a nhà phát tri?n m?ng (MSDN);
<httpruntime>nguyên t?</httpruntime>
http://msdn2.Microsoft.com/en-US/Library/e1f13641 (vs.71) .aspx

Y?u t? đ?u vào | đ?i tư?ng đ?u vào
http://MSDN.Microsoft.com/en-US/Library/ms535260 (VS.85) .aspx

Thu?c tính ENCTYPE | b?t đ?ng s?n enctype
http://msdn2.Microsoft.com/en-US/Library/ms533745.aspx

HtmlInputFile l?p
http://msdn2.Microsoft.com/en-US/Library/System.web.UI.htmlcontrols.htmlinputfile (vs.71) .aspx

B?t đ?ng s?n HtmlInputFile.PostedFile
http://msdn2.Microsoft.com/en-US/Library/System.web.UI.htmlcontrols.htmlinputfile.postedfile (vs.71) .aspx

Thu?c tính

ID c?a bài: 323246 - L?n xem xét sau cùng: 27 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
T? khóa: 
kbhowtomaster kbmt KB323246 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:323246

Cung cấp Phản hồi

 

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