ファイルアップロード時に、私はこのコードを持って予想されていないとしてコンテンツタイプは、以前はうまくいきましたが、今は正しく動作していない理由を理解できませんでした。コンテンツタイプは、Excelが
答えて
クライアント側の問題です。 UploadedFile#getContentType()
は、クライアントがmultipart/form-data部分のContent-Type
ヘッダーフィールドで送信したものを返します。明らかに問題のクライアントには、アップロードされたファイルのファイル拡張子に関連付けられたMIMEタイプはありません。これは、クライアントにMS Excelがインストールされていない場合に発生します。
あなたはサーバーであるため、ファイル拡張子に基づいてExternalContext#getMimeType()
、または古代のJSF 1.xの場合はServletContext#getMimeType()
でMIMEタイプを判別することもできます。
String filename = FilenameUtils.getName(uploadedFile.getName()); // This is available by Commons IO which you should already have.
String mimetype = FacesContext.getCurrentInstance().getExternalContext().getMimeType(filename);
// ...
MIMEタイプ情報はweb.xml
に<mime-mapping>
エントリから取得されます。 servletcontainerは、独自のデフォルトのweb.xml
(例えば、Tomcatの場合は、/conf
フォルダにあります)の全体リストを持っています。
<mime-mapping>
<extension>xlsx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
</mime-mapping>
注この検出は純粋に、ファイルの拡張子ではなく、ファイルの内容に基づいていること:あなたはXLSXために、次のようにそれはあなたのWebアプリケーションの独自のweb.xml
などに上書き/拡張することができます。これにより、クライアントがファイル拡張子を編集したときに誤検出を防止することはできません。最も信頼できるのは、Apache POIやJExcelAPIのような実際のExcelファイルパーサを使って解析し、解析中に例外がスローされないかどうかをチェックすることです。
私はすでにそれを修正する方法に答えています。結局のところ、クライアント特有のデータに頼ったことはありません。また、あなたのウェブページの訪問者のすべてがMS Officeをインストールしているとは決して想像してはいけません。愚かな間違い、教訓、学び、弾を噛んで、今修正して次回のことを覚えておいてください。起こることができる:)幸運。 – BalusC
- 1. は、コンテンツタイプが2
- 2. Excelセルのコンテンツタイプを変更する
- 3. Javascriptのコンテンツタイプが
- 4. コンテンツタイプ
- 5. JSPレスポンスのコンテンツタイプExcel - IE8で2回ダウンロードされたファイル
- 6. 違反が正しいコンテンツタイプ
- 7. 「コンテンツタイプ」データベースフィールド
- 8. 「コンテンツタイプ:アプリケーション/ PDF」を無視し、「コンテンツタイプを設定:アプリケーション/ octet-streamのは
- 9. コンテンツタイプの設定方法は?
- 10. MockMvc HttpMediaTypeNotSupportedException:コンテンツタイプ 'アプリケーション/ JSONは'
- 11. Djangoコンテンツタイプとデコレータ
- 12. Sharepoint Doc Libコンテンツタイプ
- 13. CCKコンテンツタイプのノードアクセス
- 14. コンテンツタイプと@ResponseBody春
- 15. のJPGコンテンツタイプ
- 16. コンテンツタイプのPloneカスタムテンプレート
- 17. RSSとAtomコンテンツタイプ
- 18. コンテンツタイプのOAuth2
- 19. Drupalのコンテンツタイプ
- 20. ColdFusion CFHTTPPARAMコンテンツタイプ?
- 21. ファイルのコンテンツタイプが実際のコンテンツタイプであることを確認する方法
- 22. Web配信のExcel 2003 SpreadsheetMLファイルに最適なコンテンツタイプと拡張子
- 23. SharePointコンテンツタイプが表示されません
- 24. PHPヘッダー、コンテンツタイプpngが機能しない
- 25. コンテンツタイプが正しくないAjax JSON
- 26. Kubernetesがコンテンツタイプを変更しました
- 27. paperclip 5.1コンテンツタイプのバリデーションが厳しい
- 28. コンテンツタイプが突然失われる
- 29. サーブレット:コンテンツタイプがimage/jpegの画像アップロード
- 30. コンテンツタイプがstrutsで機能しない
*何よりも前に正常に動作しましたか? – pap
@pap私は彼らがしばらく前にうまくいったと言われましたが、私はちょうどプロジェクトで作業を始めました... –