Amazon S3バケットにファイルをアップロードしていて、元のファイル名ではなくファイルのMIMEタイプを含むInputStreamとStringにアクセスできます。ファイルをS3にプッシュする前に、実際にファイル名と拡張子を作成するのは私の責任です。 MIMEタイプから使用する適切な拡張を決定するためのライブラリや便利な方法はありますか?JavaのMIMEタイプから適切なファイル拡張子を決定する方法
私はApache Tikaライブラリへの参照をいくつか見てきましたが、それは過剰なもののようですが、まだファイル拡張子を正しく検出することができませんでした。私は、このコードは動作するはずのようにそれはそう集めることができましたが、コメント主のいくつかが指摘してきたように私のタイプの変数は、「画像/ JPEG」
MimeType mimeType = null;
try {
mimeType = new MimeTypes().forName(type);
} catch (MimeTypeException e) {
Logger.error("Couldn't Detect Mime Type for type: " + type, e);
}
if (mimeType != null) {
String extension = mimeType.getExtension();
//do something with the extension
}
ファイル拡張子を設定する必要がありますか?あなたがMIMEタイプを知っていれば、それを適切な 'Content-Type'でS3にアップロードすることができ、拡張子(通常)は無関係になります。 – willglynn
あなたは正しいです、私はちょうどチェックし、S3のObjectMetadataのContent-Typeを設定することは、私の場合はそのトリックです。私はまだ質問への答えを知りたいと思う、それが将来便利になるかもしれないようだ。 – rphutchinson
十分な公正。ファイル拡張子にはMIMEタイプのTrue Mapping™はありません - 複数の拡張子を持つタイプもあれば、複数のタイプを持つ拡張子もあります - 私が独立して保持できるデータストアを使用している場合、私は知っているものだけを保存しようとします推測を控える。 – willglynn