ฉันเชื่อว่าทุกคนมีประสบการณ์เช่นนี้: มีลิงก์บนหน้าเว็บที่ชี้ไปยังไฟล์ Word บนเซิร์ฟเวอร์ เมื่อเครื่องไคลเอ็นต์ติดตั้ง Office การคลิกลิงก์จะเรียก Word เพื่อเปิดและเรียกดู เมื่อเครื่องไคลเอ็นต์ไม่มี Office ติดตั้งแล้ว คลิกลิงก์จะปรากฏขึ้น กล่องโต้ตอบบันทึก โดยสรุป หากเบราว์เซอร์รู้จักประเภทไฟล์ เบราว์เซอร์จะเปิดขึ้นมาโดยอัตโนมัติ หากไม่เป็นเช่นนั้น ระบบจะแจ้งให้ลูกค้าบันทึก แต่บางครั้งเราก็หวังว่าไม่ว่าไฟล์ประเภทไหน เราก็ไม่อยากเปิดมันและปล่อยให้ลูกค้าบันทึกมันโดยตรง เพื่อให้บรรลุข้อกำหนดนี้ สำหรับไฟล์ที่บันทึกบนฮาร์ดดิสก์ของเซิร์ฟเวอร์ ต้องใช้เมธอด SendBinary ของคอมโพเนนต์ ASPUpload สำหรับไฟล์ที่บันทึกในฐานข้อมูล คุณจะต้องเปิดชุดระเบียนแล้วส่งออกข้อมูลไบนารี่ไปยังไคลเอนต์โดยตรง . แต่คุณต้องบอกเบราว์เซอร์ถึงประเภท MIME ชื่อไฟล์ และขนาดไฟล์
1. ไฟล์บนฮาร์ดไดรฟ์ของเซิร์ฟเวอร์
-
Dim อัพโหลด, FilePath
ตั้งค่าการอัปโหลด = Server.CreateObject(Persits.Upload)
FilePath = Server.MapPath(.) & / & 2003529213019.txt
'คำอธิบายพารามิเตอร์ SendBinary:
'พารามิเตอร์ 1: เส้นทางทางกายภาพของไฟล์
'พารามิเตอร์ 2: ว่าจะส่งประเภท MIME และข้อมูลอื่น ๆ ของไฟล์ไปยังเบราว์เซอร์หรือไม่
'พารามิเตอร์ที่สาม: ประเภทไฟล์ คุณสามารถระบุประเภท MIME เฉพาะได้ แต่โดยทั่วไปคุณสามารถใช้ application/octet-binary ได้
'พารามิเตอร์ 4: ให้ลูกค้าบันทึกไฟล์หรือเปิดโดยตรง จริง: บันทึก; เท็จ (ค่าเริ่มต้น): เปิด
อัปโหลด SendBinary FilePath, True, application/octet-binary, True
-
2. ไฟล์ในฐานข้อมูลฝั่งเซิร์ฟเวอร์
-
หรี่แสง objConn, objRs
ตั้งค่า objConn = Server.CreateObject (ADODB.Connection)
ตั้ง objRs = Server.CreateObject(ADODB.RecordSet)
objConn.open Driver={ไดรเวอร์ Microsoft Access (*.mdb)};dbq= & Server.MapPath(db1.mdb)
objRs.open เลือก * จาก t5 โดยที่ id=2,objConn,1,3
Response.ContentType = แอปพลิเคชัน/octet-stream
Response.AddHeader การจัดการเนื้อหา สิ่งที่แนบมา; filename= & objRs (ชื่อไฟล์)
Response.AddHeader Content-Length,CStr(objRs(size)) 'ต้องใช้การแปลง CStr ที่นี่
Response.BinaryWrite objRs (ไฟล์)
objRs.ปิด
ตั้ง objRs = ไม่มีเลย
objConn.ปิด
ตั้งค่า objConn = ไม่มีเลย
-
วิธีนี้กำหนดให้ต้องบันทึกชื่อไฟล์และขนาดไฟล์พร้อมกันเมื่อบันทึกไฟล์! หากไม่ได้ระบุชื่อและขนาดไฟล์ หากเบราว์เซอร์รู้จักประเภทไฟล์ ไฟล์นั้นจะเปิดขึ้นโดยอัตโนมัติ หากไม่ระบุ ไคลเอนต์จะได้รับแจ้งให้บันทึก!