أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

إن المستعرض الذي تستخدمه غير معتمد

إنك تحتاج إلى تحديث المستعرض لاستخدام الموقع.

التحديث إلى أحدث إصدار من Internet Explorer

كيفية تحميل ملف إلى ملقم ويب في ASP.NET باستخدام Visual C# .NET

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية323246
الموجز
توضح هذه المقالة خطوة بخطوة حول كيفية تحميل ملف إلى ملقم ويب باستخدام Visual C# .NET. في هذا المقال إنشاء ملف Microsoft ASP.NET (WebForm1.aspx) وملف الخلفية التعليمات البرمجية ذات الصلة الخاص به (WebForm1.aspx.cs) لتحميل ملفات إلى دليل المسمى البيانات.


إنشاء تطبيق ASP.NET

في Microsoft Visual Studio .NET ، اتبع الخطوات التالية لإنشاء تطبيق جديد لتحميل ملفات إلى ملقم ويب:
  1. بدء تشغيل Microsoft Visual Studio .NET.
  2. من القائمة ملف، أشر إلى جديد ثم انقر فوق المشروع.
  3. في مربع الحوار مشروع جديد ، انقر فوق Visual C# مشاريع ضمن أنواع Project ثم انقر فوق تطبيق ويب ASP.NET ضمن قوالب.
  4. في المربع الموقع، اكتب عنوان URL لإنشاء المشروع. على سبيل المثال، اكتب http://localhost/CSharpUpload ، مما يؤدي إلى اسم المشروع الافتراضي CSharpUpload. لاحظ أن الملف WebForm1.aspx تحميل في طريقة العرض مصمم Visual Studio .NET.

إنشاء دليل البيانات

بعد إنشاء التطبيق بإنشاء الدليل "بيانات" الذي سيقبل الملفات إيداعه. بعد إنشاء هذا الدليل يجب عليك أيضاً تعيين أذونات كتابة لحساب عامل ASPNET.
  1. في إطار "مستكشف الحلول" من Visual Studio .NET انقر بزر الماوس الأيمن فوق CSharpUpload وأشر إلى إضافة ثم انقر فوق مجلد جديد. افتراضياً، يتم إنشاء مجلد جديد يحمل الاسم NewFolder1.
  2. لتغيير اسم المجلد إلى بيانات انقر بزر الماوس الأيمن فوق NewFolder1 انقر فوق إعادة تسمية ثم ثم اكتب البيانات.
  3. قم بتشغيل "مستكشف Windows" ومن ثم عيّن موقع مجلد نظام ملف البيانات الذي قمت بإنشائه في الخطوة 2. يتم وضع هذا المجلد بشكل افتراضي في المجلد التالي:
    C:\Inetpub\wwwroot\CSharpUpload\Data
  4. لتغيير الأمان كتابة إعدادات لمنح أذونات إلى الدليل "بيانات" ، انقر بزر الماوس الأيمن فوق بيانات ثم انقر فوق خصائص.
  5. في مربع الحوار خصائص البيانات انقر فوق علامة التبويب أمان ثم انقر فوق إضافة.
  6. في مربع الحوار تحديد مستخدمين أو مجموعات ، انقر فوق حساب ASPNET ثم انقر فوق إضافة. انقر فوق موافق لإغلاق مربع الحوار تحديد مستخدمين أو مجموعات.
  7. انقر فوق حساب aspnet_wp (computername \ASPNET) حساب ومن ثم انقر لتحديد خانات اختيار السماح الأذونات التالية:

    • قراءة ثم تنفيذ
    • سرد محتويات المجلد
    • قراءة
    • الكتابة

    انقر لإلغاء تحديد أي السماح و الرفض خانات الاختيار الأخرى.
  8. انقر فوق موافق لإغلاق مربع الحوار خصائص البيانات. لقد قمت بتعديل أذونات الدليل "بيانات" لقبول ملفات المستخدم التي تم تحميلها بنجاح.

تعديل الصفحة WebForm1.aspx

لتعديل تعليمات HTML برمجية من ملف WebForm1.aspx للسماح للمستخدمين من إيداع الملفات اتبع الخطوات التالية:
  1. العودة إلى مثيل مفتوح من Visual Studio .NET. يجب أن يكون WebForm1.aspx مفتوحة في إطار "المصمم".
  2. لعرض مصدر HTML لصفحة WebForm1.aspx انقر بزر الماوس الأيمن فوق WebForm1.aspx في إطار "المصمم" ومن ثم انقر فوق عرض مصدر HTML.
  3. تحديد موقع رمز HTML التالية والتي تحتوي على العلامة <form>:
    <form id="Form1" method="post" runat="server">					
  4. إضافة enctype = "multipart/النموذج - بيانات" اسم - قيمة السمة إلى العلامة <form>كما يلي:
    <form id="Form1" method="post" enctype="multipart/form-data" runat="server">					
  5. بعد فتح <form>العلامة قم بإضافة التعليمة البرمجية التالية:
    <INPUT type=file id=File1 name=File1 runat="server" /><br><input type="submit" id="Submit1" value="Upload" runat="server" />					
  6. تحقق من أن HTML <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>					

إضافة التعليمات البرمجية للتحميل إلى ملف التعليمات البرمجية الخلفية WebForm1.aspx.cs

لتعديل ملف التعليمات البرمجية الخلفية WebForm1.aspx.cs بحيث يقبلها البيانات إيداعه اتبع الخطوات التالية:
  1. من القائمة عرض، انقر فوق "تصميم".
  2. انقر نقراً مزدوجاً فوق إيداع. فتح ملف التعليمات البرمجية الخلفية WebForm1.aspx.cs Visual Studio ويقوم تلقائياً بإنشاء تعمل التعليمة البرمجية الموجودة في الأسلوب التالي:
    private void Submit1_ServerClick(object sender, System.EventArgs e){}
  3. تحقق من وجود التعليمة البرمجية التالية في مستوى الفئة لملف WebForm1.cs:
    protected System.Web.UI.HtmlControls.HtmlInputFile File1;protected System.Web.UI.HtmlControls.HtmlInputButton Submit1;						
    إذا هذه التعليمة البرمجية غير موجود في الملف بإضافة التعليمة البرمجية إلى الملف بعد السطر التالي:
    public class WebForm1 : System.Web.UI.Page{					
  4. حدد موقع التعليمة البرمجية التالية:
    private void Submit1_ServerClick(object sender, System.EventArgs e){					
  5. اضغط ENTER لإضافة سطر فارغ ثم قم بإضافة التعليمة البرمجية التالية:
    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.");}
    يتحقق هذه التعليمة البرمجية أولاً من إيداع ملف. إذا تم تحديد أي ملف "، تظهر رسالة"الرجاء تحديد ملف إيداع". في حالة تحميل ملف صالح يتم استخراج اسم الملف عن طريق استخدام مساحة الاسم System.IO ثم تجميعها الوجهة الخاصة به في مسار SaveAs. بعد المعروف الوجهة النهائية يتم حفظ الملف باستخدام أسلوب File1.PostedFile.SaveAs. trapped أي استثناء وتعرض رسالة الاستثناء على الشاشة.
  6. تحقق من ظهور الروتين الفرعي Submit1 كما يلي: خاص
    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.");	}}

اختبار التطبيق

إنشاء حل Visual Studio .NET اختبار التطبيق اتبع الخطوات التالية:
  1. في القائمة إنشاء ، انقر فوق إنشاء الحل.
  2. في "مستكشف الحلول" انقر بزر الماوس الأيمن فوق WebForm1.aspx ومن ثم انقر فوق عرض في مستعرض.
  3. بعد فتح WebForm1.aspx في المستعرض ، انقر فوق استعراض.
  4. في مربع الحوار اختيار ملف، حدد ملف أصغر من 4 ميغا بايت ثم انقر فوق فتح.
  5. لتحميل الملف انقر فوق تحميل. لاحظ بتحميل الملف إلى ملقم ويب تظهر رسالة "الملف يتم تحميل".
  6. العودة إلى مثيل مفتوح من مستكشف Windows ومن ثم عيّن موقع الدليل "بيانات".
  7. تحقق من تحميل الملف إلى بيانات الدليل.

تحميل ملفات أكبر

بشكل افتراضي، ASP.NET فقط يسمح الملفات 4,096 كيلوبايت (KB) (أو 4 ميغا بايت) أو أقل تحميل إلى ملقم ويب. يجب تغيير معلمة maxRequestLength<httpruntime>لتحميل ملفات أكبر حجماً مقطع في ملف Web.config.

ملاحظة عندما يتم تعيين السمة maxRequestLength في الملف Machine.config ومن ثم تم نشر طلب (على سبيل المثال، إيداع ملف) التي تتجاوز قيمة maxRequestLength ، يتعذر عرض صفحة خطأ مخصصة. بدلاً من ذلك، Microsoft Internet Explorer بعرض رسالة خطأ "يتعذر العثور على الملقم أو DNS".

إذا كنت ترغب في تغيير هذا الإعداد من أجل الكمبيوتر وكافة وليس تطبيق ASP.NET هذا يجب تعديل Machine.config في الملف.

افتراضياً، <httpruntime> تعيين العنصر إلى المعلمات التالية في Machine.config الملف:
<httpRuntime executionTimeout="90" maxRequestLength="4096"useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4"appRequestQueueLimit="100"/>				
يوجد الملف Machine.config في \ الدليل \CONFIG Version Number \Microsoft.NET\Framework\ System Root.


إتمام سرد التعليمات البرمجية

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.");			}		}	}}	
معلومات أخرى
نظرياً ، حجم التحميل الأقصى لملف حدٍ كبير. ومع ذلك، وبسبب مراقبة صيانة ASP.NET لا يمكن تحميل ملفات كبيرة الحجم للغاية في ASP.NET. تم معالجة عامل ASP.NET مساحة عنوان ظاهرية من ٢ غيغابايت (GB). ومع ذلك، يستخدم عملية العامل ASP.NET فقط أكثر قليلاً من ١ غيغابايت بسبب لتجزئة صيانة مراقبة والذاكرة.

أثناء عملية التحميل ASP.NET بتحميل الملف بأكمله في الذاكرة قبل أن المستخدم يمكنه حفظ الملف إلى القرص. لذلك، قد المحذوفات العملية لوجود سمة memoryLimit العلامة processModel في الملف Machine.config. تحدد السمة memoryLimit يمكن العادم نسبة الذاكرة الفعلية معالجة عامل ASP.NET قبل تلقائياً إعادة استخدام العملية. تكرير يمنع تسرب الذاكرة من التسبب في ASP.NET تعطل أو توقفه عن الاستجابة.

بالإضافة إلى ذلك، تلعب عوامل أخرى دورًا في حجم الملف الأقصى الذي يمكن تحميله. تتضمن هذه العوامل الذاكرة المتاحة المساحة المتوفرة على القرص الثابت والسرعة المعالج حركة مرور شبكة الاتصال الحالي. مع حركة مرور عادي من الملفات التي تم تحميلها توصي Microsoft باستخدام حجم أقصى للملف في النطاق من ١٠ إلى ٢٠ ميغابايت (MB). في حالة نادراً ما في تحميل ملفات قد الحد الأقصى لحجم الملف 100 ميغا بايت.

ملاحظة يمكنك تحميل الملفات التي حجمها أكبر من 100 ميغا بايت في ASP.NET. على الرغم من ذلك، توصي Microsoft باتباع أحجام إيداع الملف الأقصى المذكورة في هذه المقالة. لتحديد أحجام الملفات أكثر دقة تنفيذ الضغط اختبار على أجهزة الكمبيوتر التي تشبه تلك التي سيتم استخدامها في الإنتاج.

قد تلاحظ رسالتي الخطأ التاليتين في حالة مواجهة حدود حجم الملف أثناء عملية إيداع الملف:
  • لا يمكن عرض الصفحة.
  • يتم تطبيق الملقم Unavailable
    في سجل أحداث تكون رسالة خطأ مشابهة لما يلي:

    تكرار aspnet_wp.exe (معرف العملية: PIDNumber) تم إعادة استخدام بسبب تجاوز استهلاك الذاكرة SizeLimit ميغابايت (Percentage النسبة المئوية RAM المتوفرة).

  • تم طرح System.OutOfMemoryException استثناء نوع.
قد تجد أيضاً حدوث عمليات التحميل ببطء شديد. في حالة مشاهدة عملية Aspnet_wp.exe في "إدارة مهام Windows ستلاحظ تغير دلتا الذاكرة بواسطة 64 كيلوبايت كل ثانية 1 أو 2. اعتماداً على حجم الملف قد يؤدي هذا التأخير العملية المنفِذة ASP.NET المحذوفات نظراً لوجود خطأ responseDeadlock.
مراجع
للحصول على مزيد من المعلومات، قم بزيارة المطور Microsoft Network (MSDN) مواقع الويب التالية;

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 323246 - آخر مراجعة: 05/21/2007 03:02:16 - المراجعة: 5.11

  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
  • kbmt kbhowtomaster KB323246 KbMtar
تعليقات
ipt type="text/JavaScript" async=""> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" mp;t=">