การใช้สคริปต์ที่อัปโหลด
ด้านล่างเป็นตัวอย่างของสคริปต์ที่อัปโหลดเพื่อการพัฒนา ไฟล์ดาวน์โหลดในบทความนี้มีไฟล์และรหัสในตัวอย่าง ปล่อยไฟล์บีบอัดไปยังเส้นทางและกำหนดค่าพา ธ เสมือนจริงสำหรับเซิร์ฟเวอร์เครือข่ายของคุณ คุณสามารถทดสอบและเริ่ม uploadform.html ในเบราว์เซอร์
เรียกสคริปต์
ด้านล่างนี้เป็นวิธีการโทรหาวิธี BuildUploadRequest โทรขั้นแรกกระบวนการเต็ม: UploadRequest จากนั้นเรียกใช้วิธี BuilupLoadRequest จากนั้นส่งไปยังข้อมูลไบนารีดั้งเดิมที่ร้องขอในตัวแปรอิสระ
byTecount = request.totalbytes
requestbin = request.binaryRead (bytecount)
Dim UploadRequest
ตั้งค่า updoadRequest = createObject
builduploadrequest requestbin
ข้อมูลจะถูกย่อยสลายและเก็บไว้ในวัตถุพจนานุกรมและกู้คืนด้วยวิธีรายการ () ข้อมูลรายการเหล่านี้สามารถเก็บไว้ในตัวแปร VBScript และสามารถใช้งานได้ทุกที่ในรหัส ข้อมูลสามารถส่งเป็นการตอบสนองต่อไคลเอนต์หรือใช้ในรหัส ASP หรือในไฟล์และใส่ในฐานข้อมูล
ดึงข้อมูล
ข้อมูลของวัตถุ UploadRequest สามารถเข้าถึงได้ด้วยฟังก์ชั่นรายการ ("คีย์") ลองพิจารณาสถานการณ์นี้กันเลย: เพื่อเข้าถึงมูลค่าของการควบคุมอีเมล คุณสามารถทำได้:
email = uploadrequest.item ("อีเมล")
เนื่องจากนี่คือการควบคุมข้อความเนื้อหาเป็นสตริงสตริงนี้สามารถใช้งานได้เช่นสตริง VBScript อื่น ๆ สำหรับข้อมูลไบนารีคุณสามารถกู้คืนเนื้อหาในวิธีเดียวกัน:
piction = uploadrequest.item ("blob")
นอกจากนี้คุณยังสามารถเข้าถึงข้อมูลอื่น ๆ เช่นชื่อไฟล์และประเภทเนื้อหา พวกเขาคือการควบคุมข้อความ
ContentType = uploadRequest.item ("blob")
filepathName = uploadrequest.item ("blob")
ใช้ข้อมูลในรหัส VBScript
ข้อมูลที่อัปโหลดสามารถใช้ในรหัส VBScript เช่นตัวแปรอื่น ๆ ตัวอย่างเช่นพวกเขาสามารถส่งกลับไปยังลูกค้าเพื่อตอบกลับ
อีเมลของคุณคือ: < % = อีเมล %>
ชื่อไฟล์ของ Young คือ < % = filePathName %>
ประเภทไฟล์ของ piction ของคุณคือ < % = contentType %>
ข้อมูลไบนารีสามารถส่งกลับไปยังลูกค้าได้ ต้องตั้งค่าประเภทเนื้อหาและข้อมูลไบนารีสามารถใช้ในการเขียนวิธี BinaryWrite
Response.ContentType = ContentType Response.BinaryWrite Piction
เขียนข้อมูลที่อัปโหลดไปยังไฟล์
ในกรณีของการควบคุมคลาสไฟล์วัตถุประสงค์คือการจัดเก็บข้อมูลไบนารีลงในโดเมนไฟล์หรือฐานข้อมูลแทนที่จะส่งกลับไปยังไคลเอนต์ จุดประสงค์นี้เป็นลักษณะโดยธรรมชาติของการอัปโหลดไฟล์ ใช้วัตถุระบบไฟล์เพื่อจัดเก็บไฟล์ที่อัปโหลดลงในระบบไฟล์ของเซิร์ฟเวอร์
ก่อนอื่นสร้างวัตถุระบบไฟล์:
'สร้าง FilesYTEMObject Component ScriptObject = Server.CreateObject ("Scripting.FilesYstemObject")
ใช้วัตถุระบบไฟล์เพื่อสร้างไฟล์ในพา ธ เส้นทางสามารถแน่นอนชี้ไปที่ระบบไฟล์โดยตรง (เช่น C:/Temp) นอกจากนี้ยังสามารถเป็นสัมพัทธ์ภายใต้เส้นทางเสมือนจริงที่กำหนดโดยเซิร์ฟเวอร์เครือข่าย ใช้เมธอด mappath และตัวแปรเซิร์ฟเวอร์ path_info เพื่อใช้เส้นทางเสมือนไปยังเส้นทางสัมบูรณ์
วิธีการเขียนต้องใช้สตริงคู่ -byte เป็นตัวแปรอิสระดังนั้นหมายเลขไบต์เดียวจะถูกแปลงเป็นสตริง วิธีการเขียนมีหน้าที่ในการแปลงสตริงคู่ -ไบต์นี้และเขียนในรูปแบบ ASCII สิ่งนี้สร้างเนื้อหาไบนารีที่มีสตริงเดียว -BYTE ต้นฉบับของเรา ฉันได้ตั้งชื่อไฟล์นี้ "อัปโหลด + ชื่อไฟล์"
'สร้างและเขียนลงในไฟล์ Set MyFile = ScriptObject.createtextFile (Server.mappath (request.serverVariables_ ("path_info") & "อัปโหลด" & filename)
สำหรับ i = 1 ถึง Lenb (ค่า)
myfile.write chr (ascb (midb (value, i, 1))))
ต่อไป
myfile.close
เริ่มต้นข้อมูลที่อัปโหลดลงในฐานข้อมูล
ข้อมูลยังสามารถเก็บไว้ในฐานข้อมูล ควรจัดเก็บประเภทเนื้อหาในฐานข้อมูลเพื่อให้ข้อมูลสามารถแสดงได้ในภายหลัง ก่อนอื่นเราต้องสร้างการเชื่อมต่อกับฐานข้อมูล
ตั้งค่า conn = server.createObject ("adodb.connection"))
conn.open "dsn = wroxdns", "ผู้ใช้", "pass"
จากนั้นสร้างชุดระเบียนจากการเชื่อมต่อ:
sql = "เลือกรูปภาพ contentType จาก myTable"
ตั้งค่า rs = server.createObject
Rs.oopen SQL, Conn, 3, 3, 3
หลังจากสร้างชุดระเบียนให้ใส่ข้อมูลไบนารีลงในโดเมน Blob ของฐานข้อมูล:
Picturechunk = Picture & Chrb (0)
Rs.Fields ("Piction")
Rs.Fields ("ContentType") = ContentType
Rs.update
conn.close
ในวิธี Apendchunk ฉันต้องแก้ข้อบกพร่อง ในความเป็นจริงฉันสังเกตเห็นว่าเมื่อข้อมูลไบนารีมีจำนวนไบต์แปลก ๆ วิธี AppendChunk จะไม่ส่งสัญญาณไบต์ล่าสุด วิธีแก้ปัญหาคือการเพิ่ม CHR (0) เพื่อให้แน่ใจว่าไบต์ทั้งหมดจะถูกส่ง อาจมีวิธีอื่นถ้าเป็นเช่นนั้นโปรดบอกฉัน
เพื่อให้ได้ภาพสะท้อนของฐานข้อมูลให้ใช้ชุดระเบียนเดียวกันและใช้ประเภทเนื้อหาที่ถูกต้องเพื่อส่งกลับไปยังไคลเอนต์เป็นการตอบกลับ
Response.ContentType = Rs.Fields ("ContentType")
Size = Rs.Fields ("Piction")
Blob = Rs.Fields ("Piction")
Response.binaryWrite Blob
สรุปแล้ว
บทความนี้แสดงวิธีที่สมบูรณ์ในการยื่นไฟล์ด้วย VBScript การเข้ารหัสนั้นเป็น VBScript อย่างสมบูรณ์ซึ่งเป็นอิสระจากผลิตภัณฑ์ที่สาม
ก่อนอื่นแนะนำกระบวนการอัปโหลด (โดยใช้เนื้อหา "Multipart/Form-Data" สำหรับ HTML) จากนั้นแนะนำรหัส VBScript ที่อัปโหลดโดยละเอียด ในตอนแรกการตรวจสอบสั้น ๆ ของฟังก์ชั่น VBScript ของสตริงปฏิบัติการและซีรีย์หมายเลขไบต์เดียว จากนั้นแนะนำรหัสของสคริปต์และโครงสร้างของการอัปโหลดข้อมูล
ในที่สุดวัตถุประสงค์หลายประการของสคริปต์นี้จากการอัปโหลดตัวแปรในรหัส ASP ไปยังฐานข้อมูลหรือระบบไฟล์เพื่อจัดเก็บไฟล์อัปโหลด
คลิกลิงก์ด้านล่างเพื่อดาวน์โหลด <a href = "http://www.asptoday.com/articles/images/20000316.zip"> รหัสประจำของบทความนี้