คำนำ
⑴ ในที่สาธารณะ เช่น ห้องอ่านหนังสืออิเล็กทรอนิกส์ ห้องคอมพิวเตอร์ และร้านอินเทอร์เน็ต เนื่องจากมีการใช้งานบ่อยครั้งและการบำรุงรักษาล่าช้า เป็นเรื่องปกติที่ระบบเอาท์พุต เช่น ฟล็อปปี้ไดรฟ์ มักจะได้รับความเสียหาย เมื่อคุณต้องการเอาท์พุต ข้อมูลที่ประมวลผลมีความยุ่งยากมากเมื่ออุปกรณ์ไม่ทำงานและเพื่อประหยัดค่าใช้จ่าย ห้องคอมพิวเตอร์จำนวนมากไม่มีอุปกรณ์เอาท์พุตที่จำเป็นทั้งหมดบนคอมพิวเตอร์ที่เชื่อมต่อกับเครือข่าย
⑵ เมื่อคอมพิวเตอร์ได้รับความนิยมมากขึ้น ผู้คนก็ยิ่งต้องพึ่งพาคอมพิวเตอร์มากขึ้นเรื่อยๆ กล่าวอีกนัยหนึ่ง คอมพิวเตอร์ของพนักงานออฟฟิศเริ่มจัดเก็บข้อมูลสำนักงานและข้อมูลส่วนตัวที่สำคัญจำนวนมาก ในกรณีส่วนใหญ่ ข้อมูลเหล่านี้จะไม่ซ้ำกัน ซึ่งหมายความว่าเจ้าของจะไม่ทำสำเนาและจัดเก็บไว้ในคอมพิวเตอร์เครื่องอื่น ความปลอดภัยขึ้นอยู่กับความเสถียรของคอมพิวเตอร์ของเจ้าของโดยสิ้นเชิง
⑶ ความนิยมของอินเทอร์เน็ตทำให้ระยะห่างระหว่างผู้คนสั้นลงและทำให้การสื่อสารสะดวกยิ่งขึ้น อย่างไรก็ตาม เราจำเป็นต้องเข้าถึงอินเทอร์เน็ตทุกวันในสถานที่ต่าง ๆ เช่น บ้าน สำนักงาน และอินเทอร์เน็ตคาเฟ่ เราจะแก้ไขเอกสารต่อไปได้อย่างไร บางทีคุณสามารถพกพาข้อมูลเหล่านี้ติดตัวไปด้วยผ่านอุปกรณ์เก็บข้อมูลมือถือเช่น USB แฟลชไดรฟ์หรือฮาร์ดดิสก์พกพาได้ แต่การพกพาอุปกรณ์ดังกล่าวเพิ่มอีกเครื่องหนึ่งไม่สะดวกนักโดยเฉพาะฮาร์ดดิสก์มือถือและสถานที่ต่าง ๆ อุปกรณ์ต่าง ๆ และระบบปฏิบัติการที่แตกต่างกันไม่เหมาะกับคุณ การรองรับ USB แฟลชไดรฟ์หรือฮาร์ดไดรฟ์มือถือไม่เหมือนกันและทักษะด้านคอมพิวเตอร์ของผู้ใช้ก็แตกต่างกันด้วย
...
เนื่องจากข้อเท็จจริงเหล่านี้ การจัดเก็บข้อมูลบนเครือข่ายจึงกลายเป็นสิ่งจำเป็น
ปัจจุบันมีหลายวิธีในการใช้ที่เก็บข้อมูลเครือข่าย เช่น อีเมล, FTP, Network Places, HTTP เป็นต้น ในบรรดาฟังก์ชันเหล่านั้น FTP มีฟังก์ชันที่ทรงพลังที่สุด แต่การใช้งานที่ซับซ้อนเล็กน้อย การตั้งค่าจำนวนมากก็เพียงพอแล้วที่จะขัดขวางผู้คนจำนวนมาก โดยเฉพาะอย่างยิ่งเมื่อจำนวนผู้ใช้ไม่สามารถคาดเดาได้ การตั้งค่าสำหรับผู้ใช้ที่มีความต้องการพิเศษก็จะยุ่งยากมากขึ้น ; อีเมลเป็นสิ่งที่ทุกคนคุ้นเคย ใช่ แต่ภายในเครือข่ายท้องถิ่น มันไม่ใช่วิธีที่ดีในการแลกเปลี่ยนเอกสารและข้อมูลทางการเงิน แรงงาน อื่น ๆ ในลักษณะนี้ นอกจากนี้ เมื่อไฟล์ของคุณมีขนาดใหญ่พอ ส่งผลกระทบต่อพื้นที่เมล Network Neighbours สามารถแชร์ได้โดยระบุโฟลเดอร์เว็บและไฟล์ที่วางไว้ผู้ใช้ภายในช่วงที่กำหนดจะสามารถเข้าถึงไฟล์เหล่านี้ได้อย่างไรก็ตามขอบเขตของวิธีการนี้ค่อนข้างจำกัด ที่อยู่เซกเมนต์ DNS เดียวกันสามารถเข้าถึงได้อย่างราบรื่น ผู้อื่นโดยเฉพาะผู้ใช้บนอินเทอร์เน็ต ใช้งานยาก และเช่นเดียวกับอีเมล หลายครั้งที่คุณต้องค้นหาผ่านรายการคอมพิวเตอร์จำนวนมากเพื่อรับทรัพยากรที่คุณต้องการ! วิธีการจัดเก็บข้อมูลบนเครือข่ายที่กล่าวถึงข้างต้นยังมีข้อบกพร่องทั่วไป กล่าวคือ ผู้ดูแลระบบไม่สามารถมีความเข้าใจที่ชัดเจนเกี่ยวกับการใช้ไฟล์ที่จัดเก็บไว้ในที่จัดเก็บข้อมูลเครือข่าย และสามารถตัดสินใจได้ว่าจะเว้นพื้นที่ว่างตามเวลาที่จัดเก็บของไฟล์หรือไม่ .
บทความนี้จะแนะนำวิธีการจัดเก็บข้อมูลเครือข่ายที่ค่อนข้างง่ายซึ่งใช้งานผ่าน HTTP วิธีการนี้ถูกนำไปใช้บนแพลตฟอร์ม WINDOWS ผ่าน IIS และ ASP/ASP.NET ไม่เพียงแต่ใช้งานง่ายและสามารถอัปโหลดไฟล์ประเภทใดก็ได้ แต่ยังสามารถจำกัดพื้นที่ที่ผู้ใช้ใช้อีกด้วย ผู้ดูแลระบบสามารถจัดการไฟล์ได้มากถึง 20 ไบต์และมีขนาดใหญ่ถึงหลายร้อยเมกะไบต์ นอกจากนี้ ยังมีการรับประกันความปลอดภัยของไฟล์อีกด้วย การทำความเข้าใจโครงสร้างข้อมูลในประเด็นหลักที่สองและซอร์สโค้ดการอัปโหลดในประเด็นหลักที่สามของบทความนี้จะช่วยให้คุณสร้างที่เก็บข้อมูลเครือข่ายได้ด้วยตัวเอง คุณจะไม่ต้องพึ่งพาที่เก็บข้อมูลเครือข่ายฟรีที่มีให้ในตลาดเพื่อจัดเก็บข้อมูลที่ละเอียดอ่อน ไฟล์ภายในเครือข่าย ความปลอดภัยของคุณอยู่ในมือของคุณเอง
ภาพรวมและฟังก์ชั่นพื้นฐาน
ติดตั้งเซิร์ฟเวอร์เป็นโฮสต์ที่เก็บข้อมูลเครือข่าย ระบบปฏิบัติการใช้แพลตฟอร์ม Windows และติดตั้ง IIS5.0 ตั้งค่าบริการเว็บและสร้างเว็บไซต์เสมือนภายใต้เว็บไซต์หลักที่ชี้ไปยังที่เก็บข้อมูลเครือข่าย เช่น : d:netspace spacenetmyspace. ซอร์สโค้ด asp และ asp.net ทั้งหมดอยู่ใต้เว็บไซต์หลัก (เช่น: c:inetpubwwwroot) และ d:netspacespacenetmyspace จะวางไฟล์ที่ผู้ใช้อัปโหลด (ควรทำการเปลี่ยนแปลงเว็บไซต์เสมือนใน ซอร์สโค้ดปรับตาม)
1. ฐานข้อมูลพื้นฐานและโครงสร้างที่ใช้ :
⑴ ftpsapce.mdb : มีรายชื่อผู้ใช้ตาราง, โครงสร้างพื้นฐานของตาราง :
Id : หมายเลขลำดับ, สร้างขึ้นโดยอัตโนมัติ;
Xh: บัญชีผู้ใช้ การลงทะเบียนและการสร้างการตรวจสอบ;
Xm: ชื่อผู้ใช้ การลงทะเบียน และการสร้างการตรวจสอบ
Kl: รหัสผ่านผู้ใช้ การลงทะเบียนและการสร้างการตรวจสอบ
Maxspace: ขีดจำกัดสูงสุดของพื้นที่ผู้ใช้ ค่าเริ่มต้นจะใช้สำหรับการลงทะเบียน ผู้ดูแลระบบสามารถรีเซ็ตได้ผ่านการจัดการ
Nowspace: จำนวนพื้นที่ที่ผู้ใช้ครอบครองในปัจจุบัน
วันที่เข้าถึงล่าสุด: เวลาเข้าถึงล่าสุดของผู้ใช้ เพื่อให้ผู้ดูแลระบบใช้อ้างอิงเมื่อจัดการพื้นที่
ตั้งแต่วันนี้: เวลาลงทะเบียนผู้ใช้;
Checkx: ธงยืนยันผู้ใช้
⑵ Filelist.mdb : มีไฟล์ตารางโครงสร้างพื้นฐานของตาราง :
Id : หมายเลขลำดับสร้างโดยอัตโนมัติ;
ชื่อไฟล์: ชื่อไฟล์ที่สร้างโดยระบบอัพโหลด
Fsize: ค่าขนาดไฟล์;
Xh: บัญชีผู้ใช้;
อัปเดต: เวลาอัปโหลด;
Filescript: คำอธิบายไฟล์ซึ่งเป็นพาธและชื่อไฟล์ต้นฉบับเมื่อผู้ใช้อัปโหลด เพื่อใช้อ้างอิงเมื่อผู้ใช้โหลด
2. ฟังก์ชั่นพื้นฐาน
⑴ ผู้ใช้เข้าสู่ระบบเว็บไซต์หลัก และเข้าสู่หน้าหลักของเว็บไซต์ และให้ข้อมูลพื้นฐานของผู้ใช้สำหรับการลงทะเบียนผู้ใช้
⑵ ผู้ดูแลระบบจะตรวจสอบข้อมูลการลงทะเบียนของผู้ใช้และกำหนดพื้นที่การใช้งานสูงสุดของผู้ใช้
⑶ ผู้ใช้ที่ผ่านการตรวจสอบจะอัปโหลดไฟล์ไปยังที่จัดเก็บข้อมูลเครือข่าย ระบบจะกำหนดความถูกต้องตามกฎหมายของผู้ใช้และความถูกต้องตามกฎหมายของไฟล์ และลงทะเบียนไฟล์และข้อมูลผู้ใช้ที่อัปโหลดโดยผู้ใช้ในฐานข้อมูล
⑷ ผู้ใช้ที่ได้รับการอนุมัติสามารถโหลดซ้ำหรือลบไฟล์ที่พวกเขาอัปโหลดผ่านฟังก์ชันดาวน์โหลด
⑸ ผู้ดูแลระบบจัดการพื้นที่เครือข่ายตามฐานข้อมูลผู้ใช้และฐานข้อมูลไฟล์
⑹ ระบบขยายช่วยให้ผู้ใช้ที่ได้รับอนุญาตสามารถดาวน์โหลดไฟล์ที่อัปโหลดโดยผู้ใช้ที่ได้รับอนุญาต
ซอร์สโค้ดพื้นฐานของโมดูลการอัปโหลด
ถูกจำกัดด้วยช่องว่าง บทความนี้ให้เฉพาะซอร์สโค้ดพื้นฐานของโมดูลการอัปโหลดเท่านั้น หากคุณต้องการซอร์สโค้ดเพิ่มเติม คุณสามารถขอได้จากผู้เขียนผ่านทางอีเมล ในซอร์สโค้ดเป็นความคิดเห็นที่เพิ่มโดยผู้เขียนเพื่อความสะดวกของผู้อ่าน (ต่อไปนี้คัดลอกมาจาก upfile.aspx)
<%@ Page Language="VB" Debug="true" %>
<%@ นำเข้าเนมสเปซ = "System.Data" %>
<%@ นำเข้าเนมสเปซ = "System.Data.oledb" %>
<html>
<script language="vbscript" runat="server">
ไฟล์อัพโหลดย่อย (ผู้ส่งเป็นวัตถุ e เป็น eventargs)
ถ้า fileup.postedfile.contentlength<20 แล้ว
error.text="คุณต้องอัปโหลดไฟล์ขนาดเล็ก เพียงจดจำไว้"
fileinfo.visible=false
ทางออกย่อย
อื่น
error.text="ยืนยันตกลง"
fileinfo.visible=true
สิ้นสุดถ้า
*** ข้างต้นตรวจสอบขนาดไฟล์ที่อัพโหลด
respace.text="0"
nowspace.text="0"
*** respace หมายถึงพื้นที่ที่เหลืออยู่ nowspace หมายถึงพื้นที่ที่ใช้
dim xh1 เป็น string =user1.value
dim kl1 as string =pass1.value
*** xh1 หมายถึงหมายเลขบัญชี, kl1 หมายถึงรหัสผ่าน
dim objconnstr as string="provider=microsoft.jet.oledb.4.0;data source="
& server.mappath("ftpspace.mdb")
*** สองบรรทัดด้านบนควรเป็นคำสั่งเดียวกันในซอร์สโค้ด
dim objconn as oledbconnection = new oledbconnection(objconnstr)
dim sql1 as string="select * from userlist โดยที่ xh='"+xh1+"' และ kl='"+kl1+"'"
dim objrscc เป็น oledbcommand= new oledbcommand(sql1,objconn)
objconn.open()
หรี่ objrs เป็น oledbdatareader = objrscc.executereader()
dimix เป็นจำนวนเต็ม = 0
สลัวสูงสุดตราบเท่าที่
สลัวตอนนี้เป็นเวลานาน
ในขณะที่ ix=0
ถ้า objrs.read() แล้ว
ถ้า objrs.item("xh")=xh1 แล้ว
ถ้า objrs.item("kl")=kl1 แล้ว
ถ้า objrs.item("checkx")=1 แล้ว
ix=ix+1
สูงสุด=objrs.item("maxspace")
nows=objrs.item("โนว์สเปซ")
สิ้นสุดถ้า
สิ้นสุดถ้า
สิ้นสุดถ้า
อื่น
ix=-1
สิ้นสุดถ้า
สิ้นสุดในขณะที่
*** ข้างต้นกำหนดว่าบัญชีและรหัสผ่านถูกกฎหมายหรือไม่
หาก ix<=0 แล้ว
error.text="รหัสผ่านบัญชีไม่ถูกต้อง! หรือผู้ใช้ไม่ได้รับการรับรองความถูกต้อง โปรดรอให้ผู้ดูแลระบบตรวจสอบความถูกต้อง!"
อย่างอื่น
ถ้า fileup.postedfile.contentlength>maxs-nows แล้ว
ถ้า fileup.postedfile.contentlength>=maxs แล้ว
error.text="ความยาวไฟล์มากกว่าพื้นที่ที่จัดสรรและไม่สามารถอัพโหลดได้!"
อื่น
error.text="พื้นที่ว่างไม่เพียงพอ โปรดลบไฟล์เก่า!"
สิ้นสุดหาก
*** ข้างต้นเป็นตัวกำหนดความพร้อมของพื้นที่ผู้ใช้
อื่น
สลัว obj4str เป็น string="provider=microsoft.jet.oledb.4.0;
data source=" & server.mappath("filelist.mdb")
*** สองบรรทัดด้านบนเป็นคำสั่งเดียวกันในซอร์สโค้ด dim obj4 เป็น oledbconnection = new oledbconnection(obj4str)
dim sql10 as string="select * from files"
dim objrc1 เป็น oledbcommand= new oledbcommand(sql10,obj4)
obj4.เปิด()
สลัว objrsx เป็น oledbdatareader = objrc1.executereader()
หรี่ fn11 ให้ยาว = 0
ในขณะที่ objrsx.read()
fn11=objrsx("ชื่อไฟล์")
สิ้นสุดในขณะที่
หรี่ fn1 เป็นสตริง
fn1=cstr(fn11+1)
*** ข้อมูลข้างต้นจะสร้างชื่อไฟล์หลักที่ไม่ซ้ำกันสำหรับผู้ใช้ในการอัปโหลดไฟล์ dim objc1str เป็น string="provider=microsoft.jet.oledb.4.0;
data source=" & server.mappath("filelist.mdb")
*** สองบรรทัดด้านบนเป็นคำสั่งเดียวกันในซอร์สโค้ด dim objc1 เป็น oledbconnection = new oledbconnection(objc1str)
dim sql3 เป็น string="insert into files(filename,fsize, xh,filescript,upday)
ค่า("+cstr(fn1)+","+cstr(fileup.postedfile.contentlength)+",'"
+xh1+"','"+fileup.postedfile.filename+"','"+cstr(now())+"')"
*** สามบรรทัดข้างต้นเป็นคำสั่งเดียวกัน objc1.open() ในซอร์สโค้ด
หรี่ objrs1 เป็น oledbcommand=new oledbcommand(sql3,objc1)
หรี่ fn2 เป็นสตริง
fn2="d:/netspace/spacenet/myspace/"&cstr(fn1)&".zip"
*** ระบุพาธสัมบูรณ์และชื่อไฟล์ที่สมบูรณ์ของไฟล์ที่ผู้ใช้อัปโหลด fsize.text=cstr(fileup.postedfile. ความยาวเนื้อหา)
ftype.text=fileup.postedfile.contenttype
fname.text=fileup.postedfile.filename
ชื่อผู้ใช้.ข้อความ=user1.value
fileup.postedfile.saveas(fn2)
objrs1.ExecuteNonQuery()
objrs.ปิด
dim sql5 เป็น string="update userlist set nowspace="+cstr(nows+fileup.postedfile.contentlength)+
",lastaccessday='"+cstr(now())+"' โดยที่ xh='"+xh1+"'"
*** สองบรรทัดข้างต้นเป็นคำสั่งเดียวกันในซอร์สโค้ด
dim objrnc เช่น oledbcommand= new oledbcommand(sql5 ,objconn)
objrnc.executenonquery()
respace.text=cstr(maxs-nows-fileup.postedfile.contentlength)&"ไบต์"
nowspace.text=cstr(nows+fileup.postedfile.contentlength)&"bytes"
*** ข้อมูลข้างต้นใช้สำหรับการอัปโหลด และพื้นที่ใช้งานทั้งหมดของผู้ใช้และพื้นที่ที่เหลือทั้งหมดจะถูกคำนวณสิ้นสุดถ้า
สิ้นสุดถ้า
จบย่อย
</สคริปต์>
<ร่างกาย>
<form enctype="multipart/form-data" runat="server">
<ตาราง>
<tr><td>บัญชี:</td><td><input id="user1" runat="server"></td></tr>
<tr><td>รหัสผ่าน:</td><td><input type="password" id="pass1" runat="server"></td></tr>
<tr><td>ไฟล์:</td><td><input type="file" id="fileup" runat="server"></td></tr>
<tr><td></td><td><asp:button id="upload" onclick="uploadfile" text="Upload"
runat="เซิร์ฟเวอร์"/></td></tr>
</ตาราง>
</แบบฟอร์ม><hr>
<div id="fileinfo" มองเห็นได้ = "false" runat = "เซิร์ฟเวอร์">
ชื่อไฟล์ต้นฉบับ:<asp:label id="fname" runat="server"/><br>
ขนาดไบต์:<asp:label id="fsize" runat="server"/><br>
ประเภทไฟล์:<asp:label id="ftype" runat="server"/><br>
บัญชีผู้ใช้:<asp:label id="username" runat="server"/><br>
พื้นที่ที่เหลืออยู่:<asp:label id="respace" runat="server"/><br>
พื้นที่ใช้งาน:<asp:label id="nowspace" runat="server"/><br>
สถานะการอัปโหลด:<asp:label id="errors" runat="server"/>
</div>
*** ข้อมูลข้างต้นจะแจ้งให้ผู้ใช้ทราบถึงข้อมูลที่เกี่ยวข้องก่อนและหลังการอัปโหลดไฟล์ในเบราว์เซอร์
</ร่างกาย>
</html>
สรุป
วิธีการที่อธิบายไว้ในบทความนี้ใช้เทคโนโลยีแบบไม่มีส่วนประกอบและคำนึงถึงความปลอดภัยของไฟล์และความเป็นส่วนตัวมากขึ้น วิธีนี้เหมาะสมที่สุดสำหรับการใช้งานบนแพลตฟอร์ม Windows Server 2003 และ IIS6.0 ง่ายและปลอดภัยและสามารถขยายได้เล็กน้อย เช่น การเพิ่มหมายเลขผู้ใช้และหมายเลขกลุ่มในรายการผู้ใช้ และการเพิ่มหมายเลขกลุ่มในไฟล์ คุณสามารถกำหนดสิทธิ์ของไฟล์ซึ่งอำนวยความสะดวกในการส่งเครือข่าย การตรวจสอบ และการแชร์ไฟล์ . เมื่อใช้ร่วมกับดิสก์อาร์เรย์ ความปลอดภัยของข้อมูลจะได้รับการปรับปรุงในเชิงคุณภาพ