Apakah saya harus menentukan jenis MIME jika file yang diunggah tidak memiliki ekstensi? Dengan kata lain apakah ada tipe MIME umum standar?
Apakah saya harus menentukan jenis MIME jika file yang diunggah tidak memiliki ekstensi? Dengan kata lain apakah ada tipe MIME umum standar?
Jawaban:
Anda dapat menggunakan application/octet-stream
untuk jenis yang tidak dikenal.
RFC 2046 menyatakan di bagian 4.5.1:
Subtipe "octet-stream" digunakan untuk menunjukkan bahwa suatu badan berisi data biner yang sewenang-wenang.
application/octet-stream
file dapat dieksekusi. Dan bahkan jika suatu browser secara sadar mengunduh file yang dapat dieksekusi, itu tidak "mungkin mengeksekusi" itu tanpa diminta oleh pengguna; hanya mengunduh yang dapat dieksekusi tidak menyiratkan bahwa saya ingin dieksekusi sekarang. Jika benar-benar ada peramban yang dapat mengeksekusi application/octet-stream
file secara otomatis saat diunduh, beri tahu kami yang mana, dan bagaimana cara mereproduksi perilaku tersebut. Saat ini aku tidak percaya padamu.
Kita harus menggunakan RFC-7231 (HTTP / 1.1 Semantik dan Konten) sebagai referensi alih-alih RFC-2046 (Jenis Media) karena pertanyaan jelas tentang Jenis Konten HTTP.
Juga RFC-2046 tidak secara jelas mendefinisikan jenis yang tidak diketahui tetapi RFC-7231 tidak.
Jangan kirim tipe MIME untuk data yang tidak dikenal.
Agar lebih jelas: Jangan gunakan header Tipe Konten sama sekali.
RFC-7231
Hypertext Transfer Protocol (HTTP / 1.1): Semantik dan Konten
3.1.1.5. Jenis kontenSeorang pengirim yang menghasilkan pesan yang berisi badan muatan HARUS
menghasilkan bidang header Jenis-Konten dalam pesan itu kecuali jika
jenis media yang dimaksud dari representasi terlampir tidak diketahui
pengirim.
Bagian itu dengan jelas memberitahu Anda untuk meninggalkannya jika Anda tidak mengetahuinya dengan pasti. Ia juga memberi tahu bahwa penerima dapat berasumsi bahwa tipe adalah application / octet-stream tetapi masalahnya adalah mungkin juga sesuatu yang lain.
RFC-2046
4.5.1. Subtipe Oktet-StreamTindakan yang disarankan untuk implementasi yang menerima
entitas "application / octet-stream" adalah dengan hanya menawarkan untuk memasukkan data ke
dalam file, dengan segala Konten-Transfer-Pengkodean dibatalkan, atau mungkin
menggunakannya sebagai input ke input yang ditentukan pengguna proses.
Dan, sebagaimana telah dinyatakan di atas:
RFC-7231
3.1.1.5. Jenis kontenJika bidang header Tipe Konten tidak ada, penerima MUNGKIN dapat mengambil jenis media "aliran aplikasi / octet"
([RFC2046], Bagian 4.5.1) atau memeriksa data untuk menentukan jenisnya.
Jika Anda mendefinisikannya sebagai "application / octet-stream" maka Anda mengatakan bahwa Anda tahu itu "application / octet-stream".
Jika Anda tidak mendefinisikannya maka Anda mengatakan bahwa Anda tidak tahu apa itu dan meninggalkan keputusan untuk penerima dan penerima kemudian dapat memeriksa apakah itu berjalan seperti bebek dan ...
Saya lebih suka application/unknown
, tetapi hasilnya pasti akan sama denganapplication/octet-stream
application/octet-stream
atau application/unknown
? Ada alasan mereka menemukan image/png
.