คำถามที่ค่อนข้างง่าย แต่ดูเหมือนจะไม่สามารถพบได้ทุกที่ทางออนไลน์ ฉันกำลังพยายามสร้างโปรแกรมที่ขึ้นอยู่กับประเภทของไฟล์จะให้ส่วนขยายแก่ฉัน
คำถามที่ค่อนข้างง่าย แต่ดูเหมือนจะไม่สามารถพบได้ทุกที่ทางออนไลน์ ฉันกำลังพยายามสร้างโปรแกรมที่ขึ้นอยู่กับประเภทของไฟล์จะให้ส่วนขยายแก่ฉัน
คำตอบ:
ไม่image/jpg
ไม่เหมือนกันimage/jpeg
เท่านั้นที่image/jpeg
ได้รับการยอมรับว่าเป็นประเภท mime จริงสำหรับไฟล์ JPEG
ดูhttps://tools.ietf.org/html/rfc3745 , https://www.w3.org/Graphics/JPEG/
การให้บริการที่ไม่ถูกต้องของเนื้อหาประเภทimage/jpg
เพื่อ IE อาจทำให้เกิดปัญหาดูhttp://www.bennadel.com/blog/2609-internet-explorer-aborts-images-with-the-wrong-mime-type.htm
image/jpeg jpeg jpg;image/jpg jpeg jpg;
สำหรับสิ่งที่อาจช่วยฉันใช้รายการนี้เป็นข้อมูลอ้างอิงเพื่อกำหนดประเภทเนื้อหาของฉันเมื่อฉันต้องจัดการกับภาพในแอพของฉัน
มันบอกว่านามสกุล jpg สามารถประกาศได้ด้วย Content-type : image/jpeg
ไม่มีimage/jpg
แอตทริบิวต์สำหรับประเภทเนื้อหา
tl; dr "มาตรฐาน" เป็นระเบียบ - ฮ็อดจ์ - ลอดจ์; มันขึ้นอยู่กับคนที่คุณถาม!
image/jpg
โดยรวมมีดูเหมือนจะไม่มีชนิดไมม์ ในทางปฏิบัติซอฟต์แวร์เกือบทั้งหมดสามารถจัดการไฟล์รูปภาพที่มีชื่อว่า " *.jpg
" ได้ดี
หัวข้อเฉพาะนี้ทำให้เกิดความสับสนเนื่องจากความสัมพันธ์ที่แตกต่างกันของส่วนขยายชื่อไฟล์ที่เชื่อมโยงกับชนิด MIME ขึ้นอยู่กับองค์กรที่สร้างตารางของนามสกุลไฟล์ชื่อประเภท MIME กล่าวอีกนัยหนึ่งนามสกุลไฟล์.jpg
อาจแตกต่างกันมาก
ตัวอย่างเช่นต่อไปนี้เป็น "รายการที่สมบูรณ์" สามรายการและ RFC หนึ่งรายการที่แตกต่างกันโดยมีนามสกุลไฟล์รูปแบบภาพ JPEG ที่หลากหลายและประเภท MIME ที่เกี่ยวข้อง
.jfif
, .jfif-tbnl
, .jpe
, .jpeg
, .jpg
→image/jpeg
.jfif
, .jpe
, .jpeg
, .jpg
→image/pjpeg
.jpeg
, .jpg
→image/jpeg
.jpeg
, .jpg
→image/x-citrix-jpeg
.pjpeg
→ image/pjpeg
jpg
ไม่กล่าวถึงjpeg
→ดูRFC 2045 (ไม่พูดถึง) ดูRFC 2046 → image/jpeg
13JPEG
→ video/JPEG
jpeg2000
→ video/jpeg2000
jpm
→ image/jpm
( JPEG 2000 )jpx
→ image/jpx
( JPEG 2000 )vnd.sealedmedia.softseal.jpg
→ image/vnd.sealedmedia.softseal.jpg
"รายการที่สมบูรณ์" และ RFC เหล่านี้ไม่มีประเภท MIME image/jpg
! แต่สำหรับชนิดของไฟล์image/jpeg
บางรายการที่แตกต่างกันจะมีนามสกุลของชื่อแฟ้ม ( .jpeg
, .jpg
, ... ) image/jpeg
รายการอื่นไม่ได้กล่าวถึง
นอกจากนี้ยังมีประเภทของรูปแบบภาพ JPEG หลายรูปแบบเช่นรูปแบบProgressive JPEG Image , JPEG 2000 , ฯลฯ และ "JPEG Extensions" ที่อาจหรือไม่ทับซ้อนกันในนามสกุลไฟล์และประเภท MIME ที่ประกาศไว้
สิ่งที่น่าสับสนอีกอย่างคือRFC 3745ไม่ตรงกับประเภทสื่อของ IANAแต่RFC 3745 ควรแจ้งให้เอกสารประเภทสื่อของ IANAทราบ ตัวอย่างเช่นในRFC 3745 .jpf
เป็นนามสกุลไฟล์ที่ต้องการสำหรับimage/jpx
แต่ในIANA Media Types ไม่มีชื่อjpf
(และเอกสาร IANA นั้นอ้างอิงRFC 3745 !)
สิ่งที่ทำให้สับสนอีกอย่างคือIANA Media Typesแสดงรายการ "ชื่อ" แต่ไม่ได้แสดงรายการ สิ่งนี้มีวัตถุประสงค์ แต่สร้างความสับสนในความพยายามในการขยายส่วนขยายชื่อไฟล์กับประเภท MIME
สิ่งที่ทำให้สับสนอีกประการคือ: " mime " หรือ " MIME " หรือ " MIME type " หรือ " mime type " หรือ " mime / type " หรือ " media type " ⁉😧
เอกสารที่ดูเหมือนเป็นทางการที่สุดของ IANA นั้นไม่เพียงพออย่างน่าประหลาดใจ ชนิดไม่มี MIME มีการลงทะเบียนสำหรับการขยายไฟล์ยังมีอยู่แปลก.jpg
vnd.sealedmedia.softseal.jpg
นามสกุลไฟล์.JPEG
เป็นที่รู้จักกันเพียงvideo
ประเภทในขณะที่นามสกุลไฟล์.jpeg
เป็นประเภทภาพ (เมื่อตัวอักษรตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เริ่มมีความสำคัญ!?) ในเวลาเดียวกันjpeg2000
เป็นประเภทvideo
ๆRFC 3745พิจารณาJPEG ที่ 2000image
ประเภท! รายการ IANA ดูเหมือนจะรองรับรูปแบบ jpeg เฉพาะ บริษัท (เช่นvnd.sealedmedia.softseal.jpg
)
เนื่องจากความสับสนก่อนหน้านี้จึงเป็นการยากที่จะค้นหาเอกสารมาตรฐานที่ยอมรับในอุตสาหกรรมซึ่งแมปส่วนขยายชื่อไฟล์กับประเภท MIME โดยเฉพาะอย่างยิ่งสำหรับรูปแบบไฟล์ภาพ JPEG
คำถามที่เกี่ยวข้อง " รายการ MimeTypes ทั้งหมดบนดาวเคราะห์แมปไปยังไฟล์นามสกุล? "
สิ่งสำคัญที่ควรทราบที่นี่คือประเภท mime ไม่เหมือนกับนามสกุลไฟล์ อย่างไรก็ตามบางครั้งพวกเขามีค่าเดียวกัน
https://www.iana.org/assignments/media-types/media-types.xhtmlมีรายการประเภท Mime ที่ลงทะเบียนไว้แม้ว่าจะไม่มีอะไรทำให้คุณหยุดทำเองตราบใดที่คุณกำลังส่ง และจุดสิ้นสุดการรับ นี่คือที่มาของ Microsoft ในภาพ
ในกรณีที่มีความสับสนอยู่มากคือความจริงที่ว่าระบบปฏิบัติการมีวิธีการระบุชนิดของไฟล์ของตัวเองโดยใช้ส่วนท้ายของชื่อไฟล์ที่เรียกว่าส่วนขยาย ในระบบปฏิบัติการสมัยใหม่ชื่อทั้งหมดคือสตริงยาวหนึ่งสตริง แต่ในระบบปฏิบัติการดั้งเดิมมากกว่านั้นจะถือเป็นแอตทริบิวต์แยกต่างหาก
ระบบปฏิบัติการที่ทำให้เกิดความสับสนคือ MSDOS ซึ่ง จำกัด การขยายไว้ที่ 3 ตัวอักษร ข้อ จำกัด นี้สืบทอดมาจนถึงทุกวันนี้ในอุปกรณ์เช่นการ์ด SD ซึ่งยังคงเก็บข้อมูลในลักษณะเดียวกัน
ผลข้างเคียงอย่างหนึ่งของข้อ จำกัด นี้คือส่วนขยายไฟล์บางอย่างเช่น.gif
จับคู่ประเภท Mime ของพวกเขาimage/gif
ในขณะที่คนอื่น ๆ ถูกบุกรุก ซึ่งรวมถึงการมีส่วนขยายลงไปimage/jpeg
.jpg
แม้ใน Windows รุ่นใหม่ที่มีการยกข้อ จำกัด ไมโครซอฟท์จะไม่ปล่อยให้อดีตผ่านไปดังนั้นไฟล์นามสกุลจึงยังคงเป็นเวอร์ชั่นที่สั้นลง
ระบุว่า:
คำตอบสั้น ๆ คือ:
image/jpg
นั้นดังนั้นคำตอบก็คือมันไม่เหมือนกันimage/jpeg
ในขณะที่เราอยู่ที่มัน ...
รุ่นเก่าของ Internet Explorer ให้อิสระในการอัปโหลดjpeg
ไฟล์ด้วย Mime Type image/pjpeg
ซึ่งแน่นอนว่าหมายถึงการทำงานมากขึ้นสำหรับคนอื่น ๆ พวกเขายังอัปโหลดไฟล์png
image/x-png
ไม่ได้มีimage/jpg
แต่คุณสามารถใช้.jpg
ตัวอย่าง
<input type="file" accept=".jpg"/>
ที่มา: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#Unique_file_type_specifiers