إذا كنت تريد تحقيق وظيفة تحميل أي عدد من الملفات، فانقر فوق زر لإضافة مربع تحميل الملفات، الذي رأيته على محرك الأقراص الثابتة بالشبكة من قبل. أعرف كيفية إضافة أي عنصر تحكم في تحميل الملف باستخدام JavaScript. المشكلة هي أنه تمت إضافة عنصر تحكم Html، ولا أعرف كيفية جعل الخادم يحصل على الملف.
لذلك بحثت في Google عن "تحميل ملفات متعددة ASP.NET"، ووجدت بالفعل مقالًا بعنوان "تنفيذ تحميل ملفات متعددة في ASP.NET". تم تنفيذ المقالة في VB.NET، وكانت الوظيفة هي نفسها تمامًا أردت بشكل أساسي أن أرى كيف يحصل الخادم على الملفات التي تم تحميلها بواسطة العميل. بعد قراءة الكود الموجود في المقالة، اتضح أن System.Web.HttpContext.Current.Request.Files يحتوي على الملفات تم الرفع بواسطة متصفح العميل. أستخدم لغة C# وكتبت رمزًا بسيطًا، وكنت أعتقد في البداية أنه يجب أن يكون على ما يرام، ولكن بشكل غير متوقع، بعد تحميل 3 صور، أعاد System.Web.HttpContext.Current.Request.Files 0 تنسيقات ملفات.
لا أعرف السبب، لكنني نظرت إلى الكود، وهو بسيط جدًا ولا يمكن أن يكون خاطئًا، ثم نظرت إلى العديد من المقالات الأخرى في نتائج بحث Google، ووجدت أن المقالة الأولى التي نظرت إليها لم تكن العمل الأصلي يوجد مثالان للعمل الأصلي على موقع المؤلف. هناك نسختان، أحدهما هو VB.NET والآخر هو C#. الآن لا أحتاج إلى كتابته بنفسي local وتشغيله يعمل، فلماذا لا يعمل الكود الذي كتبته؟ لقد قمت مرارًا وتكرارًا بمقارنة الفرق بين الكود الخاص بي والكود الموجود في المقالة، وجربت عدة أماكن، ووجدت أخيرًا أنه لا علاقة له بأماكن أخرى، والسبب هو <form id="form1" runat="server" enctype=". multipart/form- data"> سمة enctype، الصفحة التي تم إنشاؤها في VS 2005 لا تحتوي على هذه السمة، ولكن مثال المقالة يحتوي عليها. لقد قمت لاحقًا بإضافة enctype = "multipart/form-data" وSystem.Web.HttpContext.Current.Request .أصبحت الملفات عدد الملفات التي يمكن الحصول عليها بشكل طبيعي.
من المحتمل أن الصفحات التي تم إنشاؤها في VS 2003 تحتوي على هذه السمة بشكل افتراضي، وإلا لكان مؤلف هذه السمة المهمة قد ذكرها في المقالة.
الرجوع إلى:
"تنفيذ عمليات تحميل ملفات متعددة في ASP.NET"
رمز الاختبار الذي قمت بإنشائه:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Demo._Default" %>
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<لغة البرمجة = "جافا سكريبت">
وظيفة addFile ()
{
var str = '<INPUT type="file" size="50" NAME="File">'
document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)
}
</script>
<html xmlns=" http://www.w3.org/1999/xhtml " >
<رئيس التشغيل = "الخادم">
<title>صفحة بلا عنوان</title>
</الرأس>
<الجسم>
<form id="form1" runat="server" enctype="multipart/form-data">
<input type = "button" value = "Add" onclick = "addFile ()">
<input onclick="this.form.reset()" type="button" value="Reset(ReSet)">
<asp:Button Runat = "server" Text = "Upload" ID = "Upload" OnClick = "Upload_Click1" </asp:Button>
<div معرف = "MyFile">
<نوع الإدخال = "ملف" اسم = "ملف" />
</div>
</النموذج>
</الجسم>
</html>
باستخدام النظام؛
باستخدام System.Data؛
باستخدام System.Configuration؛
باستخدام System.Collections؛
باستخدام System.Web؛
باستخدام System.Web.Security؛
باستخدام System.Web.UI؛
باستخدام System.Web.UI.WebControls؛
باستخدام System.Web.UI.WebControls.WebParts؛
باستخدام System.Web.UI.HtmlControls
؛
{
الفئة العامة الجزئية _Default: System.Web.UI.Page
{
Page_Load باطلة محمية (مرسل الكائن، EventArgs e)
{
}
Upload_Click1 باطلة محمية (مرسل الكائن، EventArgs e)
{
HttpFileCollection _files = System.Web.HttpContext.Current.Request.Files;
for (int i = 0; i < _files.Count; i++)
{
_files[i].SaveAs(Server.MapPath("~/Files/" + _files[i].FileName));
}
}
}
}
http://bg5sbk.cnblogs.com/archive/2006/06/11/mulitfileuploadtest.html