アップロードされたファイルに拡張子がない場合、MIME タイプを指定する必要がありますか? つまり、デフォルトの一般的な MIME タイプはありますか?
3 に答える
application/octet-stream
不明なタイプに使用できます。
RFC 2046は、セクション 4.5.1 で次のように述べています。
「オクテット ストリーム」サブタイプは、ボディに任意のバイナリ データが含まれていることを示すために使用されます。
RFC リソース:
RFC-2046 (Media Types) の代わりに RFC-7231 (HTTP/1.1 Semantics and Content) を参照として使用する必要があります。質問は明らかに HTTP Content-Type に関するものだったからです。
また、RFC-2046 では不明な型が明確に定義されていませんが、RFC-7231 では定義されています。
簡潔な答え:
不明なデータの MIME タイプを送信しないでください。
より明確にするために: Content-Type ヘッダーをまったく使用しないでください。
参考文献:
RFC-7231
ハイパーテキスト転送プロトコル (HTTP/1.1): セマンティクスとコンテンツ
3.1.1.5。コンテンツ タイプペイロード本体を含むメッセージを生成する送信者 は、同封された表現の意図したメディア タイプが送信者に不明で
ない限り、そのメッセージに Content-Type ヘッダー フィールドを生成する必要があり ます。
そのセクションは、確かにわからない場合は除外するように明確に指示しています. また、レシーバーはタイプがアプリケーション/オクテットストリームであると想定できることも示していますが、それは別のものである可能性もあります。
じゃあ何が違うの?
RFC-2046
4.5.1。オクテット ストリーム サブタイプ
「アプリケーション/オクテット ストリーム」エンティティを受け取る実装に推奨されるアクションは、
Content-Transfer-Encoding を元に戻して、データをファイルに格納するか、おそらく
それをユーザー指定の入力として使用することです。処理する。
そして、すでに上で述べたように:
RFC-7231
3.1.1.5。コンテンツ タイプContent-Type ヘッダー フィールドが存在しない場合、受信者は「アプリケーション/オクテット ストリーム」
([RFC2046]、セクション 4.5.1) のメディア タイプを想定するか、データを調べてそのタイプを判断することができます。
結論:
それを「application/octet-stream」と定義すると、それが「application/octet-stream」であることを知っていることになります。
それを定義しない場合、それが何であるかわからないことを伝えており、決定を受信者に任せ、受信者はそれがアヒルのように歩くかどうかを確認できます...
私は好むapplication/unknown
が、結果は確かにapplication/octet-stream