หากคุณต้องการทราบถึงฟังก์ชันการอัปโหลดไฟล์จำนวนเท่าใดก็ได้ ให้คลิกปุ่มเพื่อเพิ่มช่องอัปโหลดไฟล์ ซึ่งคุณเคยเห็นในฮาร์ดไดรฟ์เครือข่ายมาก่อน ฉันรู้วิธีเพิ่มการควบคุมไฟล์อัพโหลดโดยใช้ JavaScript ปัญหาคือมีการเพิ่มการควบคุม Html และฉันไม่รู้ว่าจะทำให้ฝั่งเซิร์ฟเวอร์ได้รับไฟล์ได้อย่างไร
ดังนั้นฉันจึงค้นหา "การอัปโหลดไฟล์ ASP.NET หลายไฟล์" ใน Google และพบบทความชื่อ "การใช้งานการอัปโหลดหลายไฟล์ใน ASP.NET" บทความนี้ถูกนำมาใช้ใน VB.NET และฟังก์ชันก็เหมือนกับอะไรทุกประการ ฉันต้องการ ฉันต้องการดูว่าเซิร์ฟเวอร์ได้รับไฟล์ที่อัปโหลดโดยไคลเอนต์เป็นหลัก หลังจากอ่านโค้ดในบทความแล้วปรากฎว่ามันง่ายมาก อัปโหลดโดยเบราว์เซอร์ไคลเอ็นต์ ฉันใช้ 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 ในภายหลัง .Files กลายเป็น จำนวนไฟล์ที่สามารถรับได้ตามปกติ
หน้าเพจที่สร้างขึ้นใน VS 2003 อาจมีคุณลักษณะนี้ตามค่าเริ่มต้น ไม่เช่นนั้นผู้เขียนคุณลักษณะที่สำคัญดังกล่าวอาจกล่าวถึงไว้ในบทความ
อ้างถึง:
"การใช้งานการอัปโหลดไฟล์หลายไฟล์ใน ASP.NET"
รหัสทดสอบที่ฉันทำ:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Demo._Default" %>
< ! DOCTYPE html สาธารณะ "-//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="ไฟล์">'
document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)
-
</สคริปต์>
<html xmlns=" http://www.w3.org/1999/xhtml " >
<หัว runat="เซิร์ฟเวอร์">
<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="รีเซ็ต(รีเซ็ต)">
<asp:Button Runat = "เซิร์ฟเวอร์" Text = "อัปโหลด" ID = "อัปโหลด" OnClick = "Upload_Click1" ></asp: ปุ่ม>
<div id="MyFile">
<ประเภทอินพุต = "ไฟล์" ชื่อ = "ไฟล์" />
</div>
</แบบฟอร์ม>
</ร่างกาย>
</html>
ใช้ระบบ;
ใช้ System.Data;
โดยใช้ระบบการกำหนดค่า;
ใช้ 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;
สำหรับ (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