เมื่อพัฒนาแอปพลิเคชันบนเว็บ เรามักจะต้องประมวลผลไดรฟ์ โฟลเดอร์และไฟล์ในระบบไฟล์ เช่น การรวบรวมข้อมูลที่เกี่ยวข้องกับไดรฟ์ การสร้าง เพิ่ม ย้ายหรือลบโฟลเดอร์และไฟล์ เป็นต้น ใน VB6 มีการจัดหาโมเดลออบเจ็กต์ใหม่ที่เรียกว่า FSO (File System Object) เพื่อเข้าถึงระบบไฟล์ โมเดลนี้มีเครื่องมือแบบออบเจ็กต์ เราสามารถดำเนินการต่างๆ บนระบบไฟล์ได้ง่ายและยืดหยุ่นมากขึ้นผ่านชุดคุณสมบัติและวิธีการที่มีให้
1. ความรู้เบื้องต้นเกี่ยวกับ FSO โมเดลออบเจ็กต์ FSO ประกอบด้วยออบเจ็กต์ต่อไปนี้:
วัตถุไดรฟ์: อนุญาตให้รวบรวมข้อมูล เช่น พื้นที่ว่างและแบ่งปันชื่อของไดรฟ์ เช่น ฮาร์ดดิสก์และซีดีรอมที่เชื่อมต่อทางกายภาพกับระบบหรือเชื่อมต่อทางลอจิคัลกับระบบผ่าน LAN
อ็อบเจ็กต์โฟลเดอร์: อนุญาตให้คุณสร้าง ลบ หรือย้ายโฟลเดอร์ และสอบถามระบบสำหรับชื่อ เส้นทาง ฯลฯ ของโฟลเดอร์
ออบเจ็กต์ไฟล์: ช่วยให้คุณสร้าง ลบ หรือย้ายไฟล์ และสอบถามระบบสำหรับชื่อไฟล์ เส้นทาง ฯลฯ
วัตถุ TextStream: อนุญาตให้สร้าง อ่าน และเขียนไฟล์ข้อความ
อ็อบเจ็กต์ FileSystemObject: จัดเตรียมชุดวิธีการที่สมบูรณ์สำหรับการทำงานของไดรฟ์ โฟลเดอร์ และไฟล์ ในทางปฏิบัติ มันสามารถถือเป็นชุดของอ็อบเจ็กต์ข้างต้น และมักจะใช้ร่วมกับอ็อบเจ็กต์เหล่านั้น วิธีการหลายวิธีที่เกี่ยวข้องกับออบเจ็กต์นี้ซ้ำกับสี่ออบเจ็กต์ก่อนหน้า ดังนั้นเราจึงสามารถดำเนินการส่วนใหญ่กับไดรฟ์ โฟลเดอร์ และไฟล์ผ่านออบเจ็กต์ FileSystemObject หรือผ่านไดรฟ์ โฟลเดอร์ หรือออบเจ็กต์ไฟล์ที่เกี่ยวข้อง โมเดล FSO ดำเนินการบนออบเจ็กต์เดียวกันผ่านสองวิธี และเอฟเฟกต์การดำเนินการจะเหมือนกัน วัตถุประสงค์ของการจัดเตรียมฟังก์ชันที่ซ้ำซ้อนนี้คือเพื่อให้เกิดความยืดหยุ่นในการเขียนโปรแกรมสูงสุด
ในบทความนี้ เราจะอธิบายการทำงานของไฟล์ข้อความโดยใช้ออบเจ็กต์ TextStream ของโมเดลออบเจ็กต์ FSO
(1) ใช้ FileSystemObject เพื่อรับวัตถุไฟล์ข้อความ 1 สร้างอินสแตนซ์ออบเจ็กต์ FileSystemObject ในการดำเนินการกับไฟล์ คุณต้องสร้างอินสแตนซ์ออบเจ็กต์ FileSystemObject ก่อนเพื่อสร้างหรือเปิดไฟล์ รูปแบบเฉพาะสำหรับการสร้างอินสแตนซ์ออบเจ็กต์ FileSystemObject คือ (ใช้ AFileSystemObject) เป็นตัวอย่าง:
ตั้งค่า AFileSystemObject = CreateObject("Scripting.FileSystemObject")
2. ใช้ FileSystemObject เพื่อรับวัตถุไฟล์ข้อความ TextStream
FileSystemObject มีสองวิธีในการรับออบเจ็กต์ไฟล์ข้อความ TextStream ซึ่งใช้ CreateTextFile เพื่อสร้างไฟล์ และ OpenTextFile ใช้เพื่อเปิดไฟล์ที่มีอยู่ ผลลัพธ์ที่ส่งคืนของทั้งสองวิธีคืออินสแตนซ์ของออบเจ็กต์ TextStream ใช้การดำเนินการเฉพาะกับไฟล์ได้ จะต้องดำเนินการ
⑴สร้างไฟล์ใหม่ รูปแบบเฉพาะของวิธีการสร้างไฟล์ใหม่คือ (ใช้ AFileSystemObject เป็นตัวอย่าง):
AFilesystemObject.CreateTextFile (ชื่อไฟล์ใหม่, เขียนทับไฟล์ที่มีอยู่, IsUnicode)
ใน:
NewFileName คือค่าสตริงที่ระบุชื่อของไฟล์ที่จะสร้าง ซึ่งโดยปกติจะเป็นเส้นทางที่แท้จริงของไฟล์บวกกับชื่อไฟล์ เช่น C:webshareaspsampfiletest.txt
OverwriteExistingFile เป็นค่าบูลีนที่ระบุว่าจะเขียนทับไฟล์ต้นฉบับหรือไม่ หากมีไฟล์ชื่อเดียวกันอยู่ สามารถละเว้นพารามิเตอร์นี้ได้ และค่าเริ่มต้นคือ False ซึ่งหมายความว่าไฟล์ต้นฉบับจะไม่ถูกเขียนทับ
IsUnicode เป็นค่าบูลีนที่ระบุว่าไฟล์ที่จะสร้างเป็นไฟล์ ASCII หรือไฟล์ Unicode
สามารถละเว้นพารามิเตอร์นี้ได้ และค่าเริ่มต้นคือ False ซึ่งเป็นไฟล์ ASCII
⑵ เปิดไฟล์ที่มีอยู่ รูปแบบเฉพาะของวิธีการเปิดไฟล์ที่มีอยู่คือ (ใช้ AFileSystemObject เป็นตัวอย่าง):
AFilesystemObject.OpenTextFile (ชื่อไฟล์, IOMode, สร้าง, รูปแบบ)
ใน:
FileName คือค่าสตริงที่ระบุชื่อของไฟล์ที่จะเปิด ซึ่งโดยปกติจะเป็นเส้นทางที่แท้จริงของไฟล์บวกกับชื่อไฟล์ C:filepathtest.txt
IOMode เป็นค่าคงที่ ซึ่งระบุจุดประสงค์ของการเปิดไฟล์ และ ForReading(1) หมายถึงการอ่านข้อมูล
ForAppending หมายถึง ใช้เพื่อเพิ่มข้อมูล พารามิเตอร์นี้สามารถละเว้นได้ และค่าเริ่มต้นคือ ForReading
Create คือค่าบูลีนที่ระบุว่าจะสร้างไฟล์ใหม่เมื่อไม่มีไฟล์ที่จะเปิดหรือไม่
สามารถละเว้นพารามิเตอร์นี้ได้ และค่าเริ่มต้นคือ False ซึ่งหมายความว่าจะไม่มีการสร้างไฟล์ใหม่
รูปแบบแสดงถึงวิธีการเปิดไฟล์ ค่าและความหมายที่เป็นไปได้มีดังนี้:
TristateTrue: เปิดในโหมด Unicode
TristateFalse: เปิดในโหมด ASCII
TristateUseDefault: เปิดในโหมดเริ่มต้นของระบบ
พารามิเตอร์นี้สามารถละเว้นได้ และค่าเริ่มต้นคือ TristateFalse ซึ่งเป็นโหมด ASCII
(สอง). การใช้ TextStream สำหรับการทำงานของไฟล์ หลังจากสร้างหรือเปิดไฟล์ คุณสามารถใช้วิธีการที่ได้รับจากออบเจ็กต์ TextStream เพื่อดำเนินการกับไฟล์จริงได้
1. วิธีการที่ใช้ในการดำเนินการเขียนคือ:
⑴เขียน(สตริง)
เขียนสตริงที่ระบุโดยสตริงลงในไฟล์
⑵WriteLine(สตริง)
เขียนสตริงที่ระบุโดยสตริงลงในไฟล์ และเขียนอักขระขึ้นบรรทัดใหม่
สามารถละเว้นสตริงพารามิเตอร์ได้ ในกรณีนี้จะมีการแทรกบรรทัดว่างลงในไฟล์
⑶WriteBlankLines(NumOfLines)
แทรกบรรทัดว่างจำนวนหนึ่งลงในไฟล์ จำนวนบรรทัดจะถูกระบุโดย NumOfLines
2. วิธีการและวิธีการแอตทริบิวต์ที่ใช้สำหรับการดำเนินการอ่านคือ:
⑴เมื่อสิ้นสุดบรรทัด
แอ็ตทริบิวต์นี้เป็นค่าบูลีนที่ระบุว่าตัวชี้ไฟล์ชี้ไปที่จุดสิ้นสุดของบรรทัดปัจจุบันหรือไม่
⑵เมื่อสิ้นสุดสตรีม
แอ็ตทริบิวต์นี้เป็นค่าบูลีนที่ระบุว่าตัวชี้ไฟล์ชี้ไปที่จุดสิ้นสุดของไฟล์หรือไม่
⑶ คอลัมน์
คุณลักษณะนี้เป็นค่าจำนวนเต็มที่แสดงตำแหน่งของตัวชี้ไฟล์ในบรรทัดปัจจุบัน
⑷เส้น
แอ็ตทริบิวต์นี้เป็นค่าจำนวนเต็มที่แสดงถึงหมายเลขบรรทัดของบรรทัดที่มีตัวชี้ไฟล์อยู่
⑸ อ่าน(จำนวนอักขระ)
เมธอดนี้เริ่มต้นจากตำแหน่งปัจจุบันของไฟล์ อ่านอักขระจำนวนหนึ่งที่ระบุด้วยจำนวน NumOfCharacters และส่งกลับสตริง
⑹ReadLine
เมธอดนี้เริ่มต้นจากตำแหน่งปัจจุบันของไฟล์ อ่านเนื้อหาของบรรทัดปัจจุบันจนถึงจุดสิ้นสุดของบรรทัด และส่งกลับสตริง
⑺อ่านทั้งหมด
เมธอดนี้เริ่มต้นจากตำแหน่งปัจจุบัน อ่านเนื้อหาของไฟล์ทั้งหมดจนถึงจุดสิ้นสุดของไฟล์ และส่งกลับสตริง
⑻ ข้าม(จำนวนอักขระ)
วิธีการนี้เริ่มต้นจากตำแหน่งปัจจุบันของไฟล์ และข้ามอักขระจำนวนหนึ่งที่ระบุโดยหมายเลข NumOfCharacters
⑼ SKipLine
วิธีนี้เริ่มต้นจากตำแหน่งปัจจุบันของไฟล์และข้ามเนื้อหาของบรรทัดปัจจุบัน
3. วิธีการที่ใช้ในการปิดไฟล์คือ:
⑴ ปิด
ปิดไฟล์ที่สร้างหรือเปิดแล้ว
(3) ต่อไปนี้เป็นตัวอย่างเพื่อแสดงวิธีใช้ FSO เพื่ออ่านไฟล์ข้อความและบันทึกลงในฐานข้อมูล:
1. ขั้นแรกให้สร้างเพจเพื่ออ่านเส้นทางของไฟล์: file.htm
...
<FORM METHOD=POST ACTION= "upFile .asp">
<div align="center"> <br>
<br>
<br>
<br>
<input type="file" name="path" size="40">
<INPUT TYPE="ส่ง " name ="dr" value="Import information">
</div>
</FORM>
…
2. เขียนโค้ดเพื่อบันทึกค่าข้อความที่ได้รับลงในฐานข้อมูล: upFile.asp
<%การตอบสนอง .Buffer=true%>
<!--#include file="adovbs.inc"-->
<%
strConn="DSN=DataSourceName"
set Conn=Server.CreateObject("ADODB.Connection")
Conn.open strConn
ตั้งค่า ObjComm =Server.CreateObject("ADODB.Command")
ObjComm.CommandText="sp_AddMsg" 'เรียกขั้นตอนที่เก็บไว้
ObjComm.CommandType=adCmdStoredProc
ตั้งค่า ObjComm.ActiveConnection=Conn
''''''''''สร้างอินพุตและ พารามิเตอร์เอาต์พุต '''' ''''''''''''''
ตั้ง ObjParamECom=ObjComm.CreateParameter("WC_ECompanyName",adVarchar,adParamInput,100)
ObjComm.Parameters.Append ObjParamECom
'@in_ECompanyName Varchar(50), --ชื่อภาษาอังกฤษของบริษัท
ตั้ง ObjParamAddr=ObjComm.CreateParameter("WC_Address",adVarchar,adParamInput,200)
ObjComm.Parameters.Append ObjParamAddr
'@in_Address Varchar(50), --บริษัทที่อยู่
ตั้ง ObjParamCity=ObjComm.CreateParameter("WC_City" ,adVarchar,adParamInput, 100)
ObjComm.Parameters.Append ObjParamCity
'@in_City Varchar(50), --City
...
'''''''''' การสร้างพารามิเตอร์เสร็จสมบูรณ์'''''''''' '''''' '''
%>
<%
สลัว AllText,strLine1,strLine2,strLine3
สลัว strpath,fileurl
fileurl=""
strpath=Trim(Request.form("path"))
fileurl=strpath
SET FSO=CreateObject( "Scripting.FileSystemObject")
SET ATextStream=FSO.OpenTextFile(fileurl,1,false,TristateFalse)
'''''''''แยกข้อมูล'''''''''''''''''' '''' ''''
ทำในขณะที่ไม่ใช่ ATextStream.AtEndOfStream
''''''เริ่มต้นตัวแปร''''''''''''''
strLine1=""
strLine2=""
strLine3=""
…
' '' ''''''''''''''''''''''''''''
ATextStream.SkipLine
ATextStream.Skip(11)
strLine1=Trim(ATextStream.ReadLine)
ATextStream.Skip(11) )
strLine2=Trim(ATextStream.ReadLine)
ATextStream.Skip(5)
strLine3=Trim(ATextStream.ReadLine)
…
'สิ้นสุดถ้า
''''''''''เพิ่มตัวแปรให้กับชุดพารามิเตอร์'''''' '' '''''
ObjParamECom.value=strLine1
ObjParamCCom.value=strLine2
ObjParamAddr.value=strLine3
...
''''''''''การดำเนินการสิ้นสุด''''''''''''' '''' '''
ObjComm.Execute() 'เรียกใช้คำสั่ง
LOOP
response.write "<br>"+"นำเข้าไลบรารีสำเร็จ! <a href=dolist.html>[นำเข้าต่อ]</a><br>"
set Conn=nothing
set FSO=nothing
set ATextStream=nothing
%>
เอกสารแนบ: ขั้นตอนที่เก็บไว้ sp_AddMsg รหัส
CREATE PROCEDURE dbo.sp_AddMsg -- นำเข้าองค์กรต่างประเทศ ข้อมูล
(
@in_CompanyName Varchar(100), --ชื่อบริษัท
@in_Address Varchar(200), --ที่อยู่บริษัท
@in_City Varchar(100), --เมืองบริษัท
...
)
ตาม
หมายเลขที่ตั้งไว้ที่
BEGIN TRAN
INSERT INTO Tb_WCLibrary(
WC_CompanyName ,
WC_CCompanyName,
WC_Address,
…
)
VALUES(
@in_CompanyName,
@in_CCompanyName,
@in_Address,
…
)
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN -1
END
COMMIT TRAN
RETURN 0
SET NOCOUNT OFF
ณ จุดนี้ คำอธิบายข้อความแบบเต็มคือ จบแล้ว ฉันหวังว่าบทความนี้ บทความนี้จะสามารถช่วยผู้อ่านได้บ้าง