ไฟล์ MHTML คืออะไร?
ไฟล์ที่มีนามสกุล MHTML แสดงถึงรูปแบบการเก็บถาวรของหน้าเว็บที่สามารถสร้างโดยแอปพลิเคชันต่างๆ จำนวนมาก รูปแบบนี้เรียกว่ารูปแบบไฟล์เก็บถาวร เนื่องจากบันทึกเว็บ HTML โค้ดและทรัพยากรที่เกี่ยวข้องในไฟล์เดียว ทรัพยากรเหล่านี้รวมถึงสิ่งใดก็ตามที่เชื่อมโยงกับเว็บเพจ เช่น รูปภาพ แอพเพล็ต ภาพเคลื่อนไหว ไฟล์เสียง และอื่นๆ ไฟล์ MHTML สามารถเปิดได้ในแอพพลิเคชั่นต่างๆ เช่น Internet Explorer และ Microsoft Word Microsoft Windows ใช้รูปแบบไฟล์ MHTML สำหรับบันทึกสถานการณ์ปัญหาที่เกิดขึ้นระหว่างการใช้งานแอปพลิเคชันบน Windows ที่ทำให้เกิดปัญหา รูปแบบไฟล์ MHTML เข้ารหัสเนื้อหาของหน้าคล้ายกับข้อกำหนดที่กำหนดไว้ใน message/rfc822 ซึ่งเป็นข้อกำหนดที่เกี่ยวข้องกับอีเมลข้อความธรรมดา ข้อกำหนดที่แท้จริงของรูปแบบมีรายละเอียดตาม RFC 2557
รูปแบบไฟล์ MHTML
MHTML เรียกอีกอย่างว่า MIME Encapsulation of Aggregate HTML document สำหรับความสามารถในการเข้ารหัสเว็บเพจ HTML พร้อมกับทรัพยากรไปยังไฟล์เก็บถาวรเว็บเดียว ตามข้อกำหนด RFC 2557 เอกสารรวมคือข้อความที่เข้ารหัส MIME ซึ่งมีทรัพยากรรูท (อ็อบเจ็กต์) รวมถึงทรัพยากรอื่นๆ ที่เชื่อมโยงผ่าน URI ทรัพยากรอื่นๆ ดังกล่าวอาจเป็นตัวแทนของรูปภาพแบบอินไลน์ สไตล์ชีต แอพเพล็ต ฯลฯ นอกจากนี้ ทรัพยากรเหล่านี้ยังสามารถเป็นรากของเอกสารมัลติมีเดียอื่นๆ ข้อกำหนดเอกสารฉบับเต็มสำหรับรูปแบบไฟล์ MHTML มีรายละเอียดอยู่ใน RFC 2557 และควรอ้างอิงสำหรับการพัฒนาแอปพลิเคชันประเภทใดๆ สำหรับการอ่าน/เขียนรูปแบบไฟล์นี้ มาตรฐานระบุว่าส่วนเนื้อหาที่จะอ้างอิงสามารถระบุได้โดย Content-ID หรือโดย Content-Location
ส่วนหัวของเนื้อหา MIME
ส่วนหัวของเนื้อหา MIME, ตำแหน่งที่ตั้งของเนื้อหา, ถูกกำหนดเพื่อแก้ไขการอ้างอิง URI ไปยังทรัพยากรในส่วนเนื้อหาอื่นๆ ส่วนหัวนี้อาจปรากฏในหัวข้อความหรือเนื้อหาใดก็ได้
ส่วนหัวของตำแหน่งเนื้อหา
ตำแหน่งเนื้อหาเป็นตัวแทนของ URI ที่ติดป้ายกำกับเนื้อหาของส่วนเนื้อหาที่ตำแหน่งนั้นวางอยู่ ค่าของมันสามารถเป็น URI แบบสัมบูรณ์หรือแบบสัมพัทธ์ สามารถใช้ติดป้ายกำกับทรัพยากรที่ผู้รับข้อความบางส่วนหรือทั้งหมดไม่สามารถเรียกคืนได้ ข้อความเดียวได้รับอนุญาตให้มีส่วนหัวของตำแหน่งเนื้อหาเดียวเท่านั้น ตัวอย่างของโครงสร้างแบบหลายส่วน/ที่เกี่ยวข้องซึ่งมีส่วนต่างๆ ของร่างกายที่มีป้ายกำกับทั้งตำแหน่งเนื้อหาและรหัสเนื้อหา:
Content-Type: multipart/related; boundary#"boundary-example";
type#"text/html"
--boundary-example
Content-Type: text/html; charset#"US-ASCII"
... ... <IMG SRC#"fiction1/fiction2"> ... ...
... ... <IMG SRC#"cid:97116092811xyz@foo.bar.net"> ... ...
--boundary-example
Content-Type: image/gif
Content-ID: <97116092511xyz@foo.bar.net>
Content-Location: fiction1/fiction2
--boundary-example
Content-Type: image/gif
Content-ID: <97116092811xyz@foo.bar.net>
Content-Location: fiction1/fiction3
--boundary-example--
URI ของการรวม MHTML
URI ของการรวม MHTML แตกต่างจาก URI รูท ฟิลด์ส่วนหัวของตำแหน่งเนื้อหาควรใช้กับการรวมทั้งหมด หากใช้ในหัวข้อหลายส่วน/หัวข้อที่เกี่ยวข้อง ในทำนองเดียวกัน ชุดของทรัพยากรที่ดึงมาอาจแตกต่างจากชุดของทรัพยากรที่ดึงมาโดยใช้ตำแหน่งเนื้อหาของส่วนต่างๆ เมื่อใช้ URI ที่อ้างถึงการรวม MHTML เพื่อดึงการรวมนี้ ตัวอย่างเช่น การเรียกการรวม MHTML อาจส่งคืนเวอร์ชันเก่า ในขณะที่การดึง URI รูทและอ็อบเจ็กต์ที่เชื่อมโยงในบรรทัดอาจส่งคืนเวอร์ชันที่ใหม่กว่า