質問: いつもお世話になっております。 以下の理由をご存じの方は お知恵をお借りできないでしょうか? 何卒、宜しくお願い致します。 ■現象 ファイルアップロードした際「Content Type」が 「text/Plain」とならない現象が発生しております。 ■アップロードファイルについて バイナリエディタで、csv形式(tab区切り)ファイルへ データ改行前に「0x00」挿入した**"特殊な"データ**を作成し アップロードファイルとしております。 【補足】「0x00」挿入のないデータの場合「text/Plain」となります。 ■わからないこと 同じ実装で別機能である2つのアップロード処理において アップロードした際の「Content Type」が相違します。 なぜそうなるのか見当がついておりません。 ・処理Aの場合**「application/octet-stream」** ・処理Bの場合**「text/Plain」** 単に"特殊な"データの為に 特定できないファイルとして認識されているのであれば 処理Bが「text/Plain」となる説明がつかず困っております。 ■アップロード操作の流れ ファイル選択後、実行ボタン操作により 以下Javascriptで、Entityへサブミットした後 ControllerでEntityの「Content Type」を確認しています。 ■サーバ側環境 [OS] Cent OS 6.5 [WEBサーバ] Apache 2.2.27 [Appサーバ] Tomcat 7.0.54 [Frame Work] Spring Frame work 3.1.1 [言語] java 7u25 ■アップロード(ブラウザ)操作環境 [OS] Win10 [ブラウザ] Microsoft Edge 38.14393.0.0、Microsoft EdgeHTML 14.14393 【補足】FireFox50、IE11などの他ブラウザでは「text/Plain」となります。 ■実装例 [JSP] アップロードファイル指定箇所 [Javascript] サーバへのサブミット箇所 $('#PgmEntity').attr('action', '/PgmEntity/fileUpload').submit(); [アップロードファイルのデータ型] org.springframework.web.multipart.MultipartFile 以上です。
回答: 結論から言えば、「気にしない」のが正解です。 というのも、このサーバへの送信時のファイルのContent-typeは、クライアント側が送っているものなので、誤判定だけでなく詐称される危険すら否定できない、あまり**信用できない**データなのです。 ということで、サーバ側で受け取ってから(クライアントの称するContent-typeはあまり気にせず)正しい形式か確認するのが正当なやり方です。