เมื่อลิงก์เอกสารใน IE หากพบเอกสารที่ OLE รองรับ IE จะเรียกโปรแกรมที่เกี่ยวข้องให้เปิดโดยอัตโนมัติ บางครั้งฟังก์ชันนี้อาจไม่ใช่สิ่งที่เราต้องการ แม้ว่าเราจะเตือนผู้ใช้ให้คลิกขวาที่เมาส์--> ได้ คำสั่ง "Save Target As" "..." เพื่อดาวน์โหลดเอกสาร แต่วิธีนี้ไม่เป็นมิตรนัก บทความนี้จะอธิบายการใช้วิธี FSO และ Stream เพื่อดำเนินการดาวน์โหลดเอกสารโดยตรงโดย IE
<%@ language=vbscript codepage =65001%>
<%
'ต้องป้อนชื่อไฟล์'
if Request("Filename")="" แล้ว
response.write "<h1>ข้อผิดพลาด:</h1>ชื่อไฟล์ว่างเปล่า!<p>"
อื่น
โทรดาวน์โหลดไฟล์(แทนที่(แทนที่(คำขอ("ชื่อไฟล์"),"", ""),"/", ""))
ฟังก์ชั่นดาวน์โหลดไฟล์ (strFile)
' ตรวจสอบให้แน่ใจว่าคุณใช้ MDAC เวอร์ชันล่าสุดเพื่อให้สิ่งนี้ใช้งานได้
'รับเส้นทางแบบเต็มของไฟล์ที่ระบุ
strFilename = เซิร์ฟเวอร์ MapPath (strFile)
' ล้างบัฟเฟอร์
Response.Buffer = จริง
การตอบสนองชัดเจน
' สร้างกระแส
ตั้ง s = Server.CreateObject("ADODB.Stream")
s.เปิด
' ตั้งเป็นไบนารี่
s.ประเภท = 1
' โหลดไฟล์
เมื่อเกิดข้อผิดพลาดดำเนินการต่อต่อไป
' ตรวจสอบว่ามีไฟล์อยู่
ตั้งค่า fso = Server.CreateObject("Scripting.FileSystemObject")
ถ้าไม่ใช่ fso.FileExists(strFilename) แล้ว
Response.Write("<h1>ข้อผิดพลาด:</h1>"&strFilename&" ไม่มีอยู่!<p>")
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
'รับความยาวของไฟล์
ตั้งค่า f = fso.GetFile (strFilename)
intFilelength = f.size
s.LoadFromFile(strFilename)
ถ้าทำผิด
Response.Write("<h1>ข้อผิดพลาด: </h1>ข้อผิดพลาดที่ไม่รู้จัก!<p>")
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
' ส่งส่วนหัวไปยังผู้ใช้เรียกดู
Response.AddHeader "การจัดการเนื้อหา", "ไฟล์แนบ" filename="&f.name
Response.AddHeader "ความยาวเนื้อหา",intFilelength
Response.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"
' ส่งออกไฟล์ไปยังเบราว์เซอร์
Response.BinaryWrite s.อ่าน
ตอบ
กลับ Flush ' เป็นระเบียบเรียบร้อย
s.ปิด
ชุด s = ไม่มี
ฟังก์ชันสิ้นสุด
สิ้นสุดถ้า
-