ฉันต้องระบุประเภท MIME หรือไม่ถ้าไฟล์ที่อัพโหลดไม่มีนามสกุล? กล่าวอีกนัยหนึ่งมีประเภท MIME ทั่วไปที่เป็นค่าเริ่มต้นหรือไม่
ฉันต้องระบุประเภท MIME หรือไม่ถ้าไฟล์ที่อัพโหลดไม่มีนามสกุล? กล่าวอีกนัยหนึ่งมีประเภท MIME ทั่วไปที่เป็นค่าเริ่มต้นหรือไม่
คำตอบ:
คุณสามารถใช้application/octet-stream
สำหรับประเภทที่ไม่รู้จัก
RFC 2046รัฐในส่วน 4.5.1:
ชนิดย่อย "octet-stream" ใช้เพื่อระบุว่าเนื้อหามีข้อมูลไบนารีโดยพลการ
application/octet-stream
ไฟล์นั้นทำงานได้ และแม้ว่าเบราว์เซอร์จะดาวน์โหลดไฟล์ที่เรียกใช้งานได้อย่างรู้เท่าทันมันก็ไม่ได้ "อาจเรียกใช้" โดยที่ผู้ใช้ไม่ได้ร้องขอ เพียงแค่ดาวน์โหลดไฟล์ปฏิบัติการไม่ได้หมายความว่าฉันต้องการให้มันรันตอนนี้ หากมีเบราว์เซอร์ที่สามารถเรียกใช้application/octet-stream
ไฟล์โดยอัตโนมัติเมื่อดาวน์โหลดให้บอกเราว่าควรทำเช่นไร ตอนนี้ฉันไม่เชื่อคุณ
เราควรใช้ RFC-7231 (ความหมาย HTTP / 1.1 และเนื้อหา) เป็นข้อมูลอ้างอิงแทน RFC-2046 (ประเภทสื่อ) เพราะคำถามมีความชัดเจนเกี่ยวกับ HTTP Content-Type
ด้วย RFC-2046 ไม่ได้กำหนดประเภทที่ไม่รู้จักอย่างชัดเจน แต่ RFC-7231 ทำ
อย่าส่งประเภท MIME สำหรับข้อมูลที่ไม่รู้จัก
เพื่อให้ชัดเจนยิ่งขึ้น: อย่าใช้ส่วนหัวของประเภทเนื้อหาเลย
RFC-7231
Hypertext Transfer Protocol (HTTP / 1.1): ความหมายและเนื้อหา
3.1.1.5 ชนิดของเนื้อหาผู้ส่งที่สร้างข้อความที่มี
เนื้อหาส่วนของข้อมูลSHOULD จะสร้างฟิลด์ส่วนหัวของประเภทเนื้อหาในข้อความนั้นยกเว้นว่า
ประเภทสื่อที่ต้องการของการเป็นตัวแทนล้อมรอบไม่เป็นที่รู้จักของ
ผู้ส่ง
ส่วนนั้นจะบอกให้คุณออกไปอย่างชัดเจนถ้าคุณไม่แน่ใจ นอกจากนี้ยังบอกว่าผู้รับสามารถสันนิษฐานได้ว่าประเภทนั้นคือ application / octet-stream แต่สิ่งที่มันอาจเป็นอย่างอื่น
RFC-2046
4.5.1 ประเภทย่อยของ octet-Streamการดำเนินการที่แนะนำสำหรับการใช้งานที่ได้รับ
เอนทิตี "แอปพลิเคชัน / octet-stream" ก็คือการเสนอให้ใส่ข้อมูลลง
ในไฟล์พร้อมการเข้ารหัสการถ่ายโอนเนื้อหาใด ๆ ที่เลิกทำหรืออาจจะ
ใช้เป็นอินพุตให้กับผู้ใช้ กระบวนการ.
และตามที่ระบุไว้ข้างต้น:
RFC-7231
3.1.1.5 ชนิดของเนื้อหาหากไม่มีส่วนหัวของเนื้อหาประเภทเนื้อหาผู้รับอาจถือว่าประเภทสื่อของ "application / octet-stream"
([RFC2046], ส่วน 4.5.1) หรือตรวจสอบข้อมูลเพื่อกำหนดประเภทของมัน
หากคุณกำหนดเป็น "application / octet-stream" คุณจะบอกว่าคุณรู้ว่าเป็น "application / octet-stream"
หากคุณไม่ได้กำหนดไว้คุณก็กำลังบอกว่าคุณไม่รู้ว่ามันคืออะไรและปล่อยให้ตัดสินใจรับและผู้รับสามารถตรวจสอบว่ามันเดินเหมือนเป็ดและ ...
ฉันชอบapplication/unknown
แต่ผลลัพธ์จะเหมือนกันอย่างแน่นอนapplication/octet-stream
application/octet-stream
หรือapplication/unknown
? image/png
มีเหตุผลที่พวกเขาคิดค้นเป็น