Bagaimana untuk meng-upload file ke server Web di ASP.NET dengan menggunakan Visual C#.NET

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 323246 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini selangkah demi selangkah menjelaskan bagaimana untuk meng-upload file ke Sebuah Web server dengan menggunakan Visual C#.NET. Dalam artikel ini, Anda membuat Microsoft ASP.NET file (WebForm1.aspx) dan yang terkait kode-file di belakang (WebForm1.aspx.cs) untuk meng-upload file ke direktori yang bernama Data.


Menciptakan situs web ASP.NET aplikasi

Di Microsoft Visual Studio.NET, ikuti langkah berikut untuk membuat aplikasi baru untuk meng-upload file ke Web server:
  1. Mulai Microsoft Visual Studio.NET.
  2. Pada Berkas menu, titik Baru, lalu klik Project.
  3. Dalam Proyek baru kotak dialog, klik Visual C# proyek di bawah Jenis proyek, lalu klik ASP.Aplikasi NET Web di bawah Pola acu.
  4. Dalam Lokasi kotak, ketik URL untuk menciptakan proyek. Untuk contoh ini, jenishttp://localhost/CSharpUpload, yang menciptakan default nama proyek CSharpUpload. Pemberitahuan bahwa berkas WebForm1.aspx beban dalam Lihat desainer Visual Studio.NET.

Membuat direktori data

Setelah membuat aplikasi, Anda membuat Data direktori yang akan menerima upload file. Setelah Anda membuat direktori ini, Anda juga harus menetapkan izin menulis ASPNET pekerja account.
  1. Di jendela Explorer solusi Visual Studio.NET, Klik kanan CSharpUpload, arahkan ke Tambahkan, lalu klik Folder baru. Secara default, folder baru yang diberi nama NewFolder1 adalah dibuat.
  2. Untuk mengubah nama folder untuk Data, klik kanan NewFolder1, klik Ubah nama, kemudian ketik Data.
  3. Jalankan Windows Explorer, dan kemudian Cari Data file sistem folder yang Anda buat di langkah ke 2. Secara default, folder ini terletak di map berikut:
    C:\Inetpub\wwwroot\CSharpUpload\Data
  4. Untuk mengubah keamanan pengaturan untuk memberikan menulis izin untuk Data direktori, klik kanan Data, lalu klik Properti.
  5. Dalam Data properti kotak dialog, klik Keamanan tab, dan kemudian klik Tambahkan.
  6. Dalam Pilih pengguna atau grup kotak dialog, Klik ASPNET account, dan kemudian klik Tambahkan. Klik Oke untuk menutup Pilih pengguna atau grup dialog kotak.
  7. Klik (akun aspnet_wp)computername\ASPNET) rekening, dan kemudian klik untuk memilih Memungkinkan memeriksa kotak untuk ijin berikut:

    • Baca dan Eksekusi
    • Buat Daftar Isi Map
    • Baca
    • Menulis

    Klik untuk mengosongkan lainnya Memungkinkan dan Menyangkal kotak centang.
  8. Klik Oke untuk menutup Data properti kotak dialog. Anda telah berhasil diubah Data direktori izin untuk menerima pengguna upload file.

Memodifikasi halaman WebForm1.aspx

Untuk mengubah kode HTML file WebForm1.aspx untuk mengizinkan pengguna untuk meng-upload file, ikuti langkah berikut:
  1. Kembali ke contoh terbuka Visual Studio.NET. WebForm1.aspx harus terbuka di jendela desainer.
  2. Untuk melihat sumber HTML halaman WebForm1.aspx, Klik kanan WebForm1.aspx di jendela desainer, dan kemudian klik Tampilkan sumber HTML.
  3. Cari kode HTML berikut, yang berisi<form>Tag:</form>
    <form id="Form1" method="post" runat="server">
    					
  4. Tambahkan enctype = "multipart /-data formulir" nama-nilai atribut untuk<form>Tag sebagai berikut:</form>
    <form id="Form1" method="post" enctype="multipart/form-data" runat="server">
    					
  5. Setelah pembukaan<form>Tag, tambahkan kode berikut:</form>
    <INPUT type=file id=File1 name=File1 runat="server" />
    <br>
    <input type="submit" id="Submit1" value="Upload" runat="server" />
    					
  6. Memverifikasi bahwa HTML<form>Tag muncul sebagai berikut:</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>
    					

Menambahkan kode upload ke WebForm1.aspx.cs kode-file di belakang

Untuk mengubah WebForm1.aspx.cs kode-file di belakang jadi itu menerima upload data, ikuti langkah berikut:
  1. Pada Lihat menu, klik Desain.
  2. Klik dua kali Meng-upload. Visual Studio membuka WebForm1.aspx.cs kode-file di belakang dan secara otomatis menghasilkan kode metode berikut:
    private void Submit1_ServerClick(object sender, System.EventArgs e)
    {
    
    
    }
  3. Memverifikasi bahwa kode berikut ada pada tingkat kelas berkas WebForm1.cs:
    protected System.Web.UI.HtmlControls.HtmlInputFile File1;
    protected System.Web.UI.HtmlControls.HtmlInputButton Submit1;
    						
    Jika kode ini tidak ada dalam file, menambahkan kode ke file setelah baris berikut:
    public class WebForm1 : System.Web.UI.Page
    {
    					
  4. Cari kode berikut:
    private void Submit1_ServerClick(object sender, System.EventArgs e)
    {
    					
  5. Tekan ENTER untuk menambahkan baris kosong, dan kemudian tambahkan berikut kode:
    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.");
    }
    Kode ini pertama memverifikasi bahwa file yang telah di-upload. Jika tidak ada file dipilih, Anda menerima pesan "Pilih file untuk di upload". Jika yang berlaku file di-upload, nama file yang diambil dengan menggunakan System.io namespace, dan tujuannya adalah berkumpul di SaveAs jalan. Setelah tujuan akhir dikenal, berkas disimpan oleh menggunakan File1.PostedFile.SaveAs metode. Ada pengecualian terjebak, dan pesan pengecualian ditampilkan pada layar.
  6. Memverifikasi bahwa Submit1 subrutin muncul sebagai berikut:
    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.");
    	}
    }

Menguji aplikasi

Membangun Anda Visual Studio.Solusi yang bersih dan untuk menguji aplikasi, ikuti langkah berikut:
  1. Pada Bangun menu, klik Membangun solusi.
  2. Dalam solusi Explorer, klik kanan WebForm1.aspx, lalu klik Lihat dalam Browser.
  3. Setelah WebForm1.aspx terbuka dalam browser, klik People.
  4. Dalam Pilih File kotak dialog, pilih file yang lebih kecil daripada 4 megabyte (MB), kemudian klik Terbuka.
  5. Untuk meng-upload file, klik Meng-upload. Perhatikan bahwa file upload ke Web server dan bahwa Anda menerima pesan "file yang telah di-upload".
  6. Kembali ke contoh terbuka Windows Explorer, kemudian Cari Data direktori.
  7. Memverifikasi bahwa file yang telah di-upload data direktori.

Meng-upload file yang lebih besar

Secara default, ASP.NET hanya mengizinkan file yang kilobyte 4,096 (KB) (atau 4 MB) atau kurang untuk di-upload ke Web server. Untuk meng-upload lebih besar file, Anda harus mengubah maxRequestLength parameter <httpruntime></httpruntime> bagian dalam Web.config file.

Catatan Ketika maxRequestLength atribut diatur dalam Machine.config elemen dari file dan kemudian permintaan Dikirim (misalnya, sebuah file upload) yang melebihi nilai dari maxRequestLength, halaman kesalahan kustom tidak ditampilkan. Sebaliknya, Microsoft Internet Explorer akan menampilkan kesalahan "Tidak dapat menemukan server atau DNS" kepada kami.

Jika Anda ingin mengubah pengaturan ini untuk semua komputer dan bukan hanya ASP ini.NET aplikasi, Anda harus memodifikasi Machine.config elemen dari file.

Secara default, <httpruntime></httpruntime> elemen diatur ke parameter berikut di Machine.config elemen dari berkas:
<httpRuntime 
executionTimeout="90" 
maxRequestLength="4096"
useFullyQualifiedRedirectUrl="false" 
minFreeThreads="8" 
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100"
/>
				
Machine.config elemen dari file terletak di \Sistem Root\Microsoft.NET\Framework\Versi Nomor\CONFIG direktori.


Daftar kode lengkap

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

INFORMASI LEBIH LANJUT

Secara teoritis, ukuran berkas maksimum meng-upload cukup besar. Namun, karena dari ASP.Pemantauan kesehatan bersih, Anda tidak bisa upload sangat besar file dalam ASP.NET. ASP.NET pekerja proses memiliki ruang alamat virtual 2 gigabyte (GB). Namun, ASP.NET pekerja proses hanya menggunakan sedikit lebih dari 1 GB karena kesehatan pemantauan dan memori fragmentasi.

Selama proses upload, ASP.NET load file seluruh dalam memori sebelum pengguna dapat menyimpan file ke disk. Oleh karena itu, proses mungkin mendaur ulang karena memoryLimit atribut processModel Tag di Machine.config elemen dari file. The memoryLimit atribut menentukan persentase memori fisik yang ASP.NET pekerja proses dapat knalpot sebelum proses secara otomatis daur ulang. Daur ulang mencegah kebocoran memori menyebabkan ASP.NET untuk kecelakaan atau untuk berhenti merespons.

Selain itu, faktor lain yang berperan dalam ukuran berkas maksimum yang dapat di-upload. Faktor-faktor ini termasuk memori yang tersedia, ruang hard disk, kecepatan prosesor dan lalu-lintas jaringan saat ini. Dengan lalu-lintas biasa file sedang diupload, Microsoft menyarankan agar Anda menggunakan ukuran berkas maksimum dalam kisaran 10-20 megabyte (MB). Jika Anda jarang upload file, ukuran berkas maksimum mungkin 100 MB.

Catatan Anda dapat meng-upload file yang lebih besar dari 100 MB di ASP.NET. Namun, Microsoft menganjurkan bahwa Anda mengikuti ukuran berkas maksimum meng-upload yang disebutkan dalam artikel ini. Untuk menentukan ukuran file yang lebih tepat, melakukan stres pengujian pada komputer yang mirip dengan orang-orang yang akan digunakan dalam produksi.

Anda mungkin akan melihat pesan kesalahan berikut jika Anda menemukan batas ukuran file selama proses upload file:
  • Halaman tidak dapat ditampilkan.
  • Aplikasi server adalah Tidak tersedia
    Log peristiwa, pesan kesalahan akan mirip dengan berikut:

    aspnet_wp.exe (PID:PIDNumber) adalah daur ulang karena memori konsumsi melebihi SizeLimit MB (Persentase persen dari tersedia RAM).

  • Pengecualian jenis System.OutOfMemoryException dilemparkan.
Anda mungkin juga menemukan bahwa upload terjadi sangat lambat. Jika Anda menonton proses Aspnet_wp.exe pada Windows Task Manager, Anda akan melihat bahwa memori delta perubahan oleh 64 KB setiap 1 hingga 2 detik. Tergantung pada ukuran file, penundaan ini dapat menyebabkan ASP.NET pekerja proses untuk mendaur ulang karena kesalahan responseDeadlock.

REFERENSI

Untuk informasi tambahan, kunjungi Website Microsoft berikut Situs Web Developer Network (MSDN);
<httpruntime>elemen</httpruntime>
.aspx http://msdn2.Microsoft.com/en-us/library/e1f13641 (vs.71)

Elemen INPUT | masukan objek
.aspx http://MSDN.Microsoft.com/en-us/library/ms535260 (VS.85)

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

HtmlInputFile kelas
.aspx http://msdn2.Microsoft.com/en-us/library/System.web.UI.htmlcontrols.htmlinputfile (vs.71)

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

Properti

ID Artikel: 323246 - Kajian Terakhir: 26 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Kata kunci: 
kbhowtomaster kbmt KB323246 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:323246

Berikan Masukan

 

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