ฉันพบปัญหาดังกล่าวเมื่อใช้ ASP เพื่อสร้างเว็บเพจสำหรับหน่วยหนึ่ง ระบบ MIS ก่อนหน้าของหน่วยบันทึกไฟล์ Word บางไฟล์ในรูปแบบสตรีมไบต์ในฐานข้อมูล ตอนนี้ผู้ใช้ต้องการให้ฉันใช้ ASP เพื่อแตกไฟล์ Word เหล่านี้ ข้อมูลจากฐานข้อมูลออกมาแสดงบนหน้าเว็บ ตอนแรกฉันคิดว่าจะสร้างไฟล์ชั่วคราวบนเซิร์ฟเวอร์แล้วเพิ่มลิงก์ไปยังไฟล์ชั่วคราวในหน้าเว็บ อย่างไรก็ตาม วิธีนี้จะเพิ่มภาระบนเซิร์ฟเวอร์อย่างมาก และจะมั่นใจได้อย่างไรว่าไฟล์ชั่วคราว ลูกค้ารายใดรายหนึ่งมั่นใจในบริการ ไฟล์จะไม่ถูกเขียนทับโดยไฟล์ที่ใช้โดยไคลเอนต์อื่น และวิธีลบไฟล์หลังจากถ่ายโอนไปยังผู้ใช้แล้ว ปัญหาเหล่านี้แก้ไขได้ยากในทางปฏิบัติ แล้วมีวิธีที่ดีกว่านี้ไหม?
ด้วยเหตุนี้ ฉันจึงตรวจสอบหนังสืออ้างอิง ASP อย่างละเอียด และพบว่าออบเจ็กต์ Response มีแอตทริบิวต์ที่เรียกว่า contenttype ซึ่งกำหนดประเภท MIME ของเนื้อหาที่เซิร์ฟเวอร์ส่งไปยังไคลเอนต์ ชื่อเต็มของ MIME คือ MultiPurpose Internet Mail Extensions ซึ่งเป็นส่วนขยายอินเทอร์เน็ตเมลอเนกประสงค์ เรารู้ว่าในการเขียนโปรแกรมเว็บบางครั้งเราชี้ไฮเปอร์ลิงก์ไปยังไฟล์ Word หรือ Excel เมื่อผู้ใช้คลิกลิงก์ เบราว์เซอร์จะเรียกวิธีการที่เกี่ยวข้องเพื่อเปิดไฟล์โดยอัตโนมัติ สาเหตุที่เป็นไปได้ก็คือหลังจากติดตั้ง office บนเครื่องของผู้ใช้แล้ว ประเภททรัพยากร MIME ที่เกี่ยวข้องจะถูกลงทะเบียนในเบราว์เซอร์ ตัวอย่างเช่น ประเภท MIME ของไฟล์คำคือ Application/msword (ประเภทแรกคือประเภท MIME และอย่างหลังคือคลาสย่อย MIME) และประเภททรัพยากร MIME ของไฟล์ Excel คือ Application/msexcel ที่จริงแล้ว ทรัพยากรทั้งหมดที่เบราว์เซอร์สามารถจัดการได้นั้นมีประเภททรัพยากร MIME ที่สอดคล้องกัน ตัวอย่างเช่น ไฟล์ html ประเภท MIME คือ Text/html และไฟล์ JPG ประเภท MIME คือ Image/JPG ในการโต้ตอบกับเซิร์ฟเวอร์ เบราว์เซอร์จะกำหนดประเภทของการประมวลผลที่จะดำเนินการตามประเภท MIME ของข้อมูลที่ได้รับ สำหรับไฟล์ เช่น html และ JPG เบราว์เซอร์จะเปิดไฟล์เหล่านั้นโดยตรง เบราว์เซอร์ไม่สามารถเปิดได้ด้วยตัวเอง ไฟล์ถูกเปิดโดยการเรียกวิธีการที่เกี่ยวข้อง สำหรับไฟล์ที่ไม่ได้ทำเครื่องหมายด้วยประเภท MIME เบราว์เซอร์จะเดาประเภทตามนามสกุลและเนื้อหาไฟล์ หากเบราว์เซอร์ไม่สามารถเดาได้ มันจะส่งผ่านเป็น application/octet-stream เพื่อทำความเข้าใจประเภท MIME ของไฟล์ต่างๆ โปรดดูใน win98 My Computer->View->Folder Options->File Types
ดังนั้นฉันจึงมีความคิดและคิดว่าใน ASP ฉันสามารถนำข้อมูล WORD ออกมาเป็นสตรีมไบต์ก่อน จากนั้นทำเครื่องหมายแอตทริบิวต์ประเภทเนื้อหาเป็น Application/msword แล้วส่งไปยังไคลเอนต์ หลังจากที่ไคลเอนต์ได้รับทรัพยากรนี้แล้ว จะเป็นประเภท MIME จะเรียก Word บนคอมพิวเตอร์ไคลเอนต์โดยอัตโนมัติ (แน่นอนว่ามีการติดตั้ง Word บนคอมพิวเตอร์ไคลเอนต์ มิฉะนั้นจะถือว่าเป็นทรัพยากรที่ไม่รู้จัก โดยแจ้งให้ผู้ใช้บันทึกแทนที่จะเปิดขึ้นมา) เปิดมัน ผลการทดสอบดีมาก วิธีการนั้นง่ายและรวดเร็ว และเบราว์เซอร์ใช้โหมดฝังตัว (คล้ายกับโหมด OLE) เพื่อเปิดใน IE5 และผลที่ได้จะดียิ่งขึ้น ต่อไปนี้เป็นเนื้อหาของโปรแกรม
สมมติว่าชื่อตารางคือ tab_word มีสองฟิลด์ในตาราง หนึ่งคือจำนวนเต็มชื่อ id ซึ่งใช้เป็นตัวระบุเฉพาะของข้อมูล Word ตอนนี้เราต้องการแสดงเนื้อหาของไฟล์ Word ที่มี ID เท่ากับ 1 บนเพจ โปรแกรม ASP มีดังนี้:
-
' conn - สร้างการเชื่อมต่อฐานข้อมูลแล้ว
'rs - ชุดผลลัพธ์
rs = conn.execute (เลือก
worddata จาก tab_word โดยที่ id = 1)
response.contenttype = แอปพลิเคชัน/msword
การตอบสนอง writebinary (อาร์เอส (worddata))
'โปรดใช้ความระมัดระวังในการส่งข้อมูลในชุดผลลัพธ์โดยตรงโดยใช้ writebinary อย่าใช้ตัวแปร
'รับข้อมูลนี้มิฉะนั้นระบบจะรายงานข้อผิดพลาด'
-
ด้วยวิธีการที่คล้ายกัน คุณสามารถประมวลผล Excel, Bmp และข้อมูลประเภทอื่นๆ ได้อีกมากมาย