ファイルアップロード時に、私はこのコードを持って予想されていないとしてコンテンツタイプは、以前はうまくいきましたが、今は正しく動作していない理由を理解できませんでした。コンテンツタイプは、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. Excelセルのコンテンツタイプを変更する
- 2. コンテンツタイプ
- 3. 違反が正しいコンテンツタイプ
- 4. 「コンテンツタイプ」データベースフィールド
- 5. 「コンテンツタイプ:アプリケーション/ PDF」を無視し、「コンテンツタイプを設定:アプリケーション/ octet-streamのは
- 6. Web配信のExcel 2003 SpreadsheetMLファイルに最適なコンテンツタイプと拡張子
- 7. Sharepoint Doc Libコンテンツタイプ
- 8. CCKコンテンツタイプのノードアクセス
- 9. Djangoコンテンツタイプとデコレータ
- 10. コンテンツタイプのPloneカスタムテンプレート
- 11. RSSとAtomコンテンツタイプ
- 12. のJPGコンテンツタイプ
- 13. は、ExcelがのOpenXml
- 14. SharePointコンテンツタイプが表示されません
- 15. CXF WebClientがHTTPコンテンツタイプをオーバーライドします
- 16. コンテンツタイプが突然失われる
- 17. コンテンツタイプがstrutsで機能しない
- 18. S3 Presigned Post特定のコンテンツタイプが必要
- 19. PHPヘッダー、コンテンツタイプpngが機能しない
- 20. アップデートパネルとコンテンツタイプの問題がASP.netページ
- 21. がどのように特定のコンテンツタイプ
- 22. nginxのデフォルトのコンテンツタイプ
- 23. MOSS 2007のコンテンツタイプ - ファームワイドアプリケーション
- 24. Djangoコンテンツタイプの質問
- 25. 権限別のコンテンツタイプ
- 26. 取得:コンテンツタイプが変更されるのはなぜですか?
- 27. .iniファイルのコンテンツタイプとは何ですか?
- 28. コンテンツタイプ= "application/json"の設定方法は?
- 29. SharePointコンテンツタイプを更新するには?
- 30. Feincmsはコンテンツタイプを混合します
*何よりも前に正常に動作しましたか? – pap
@pap私は彼らがしばらく前にうまくいったと言われましたが、私はちょうどプロジェクトで作業を始めました... –