Przesyłam pliki do zasobnika Amazon s3 i mam dostęp do InputStream oraz ciąg zawierający typ MIME pliku, ale nie oryginalną nazwę pliku. To zależy od mnie, czy faktycznie utworzę nazwę pliku i rozszerzenie przed wysłaniem pliku do S3. Czy istnieje biblioteka lub wygodny sposób określenia odpowiedniego rozszerzenia do użycia z typu MIME?Jak określić odpowiednie rozszerzenie pliku z typu MIME w Javie
Widziałem kilka odwołań do biblioteki Apache Tika, ale to wygląda na przesadę i nie udało mi się jej skutecznie wykryć rozszerzeń plików. Z tego co udało mi się zebrać wydaje się, że ten kod powinien działać, ale jestem po prostu coraz pusty ciąg, kiedy mój typ zmiennej jest „image/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
}
Czy na pewno chcesz ustawić rozszerzenie pliku? Jeśli znasz typ MIME, możesz przesłać go do S3 z właściwym 'Content-Type', a rozszerzenie (zwykle) staje się nieistotne. – willglynn
Masz rację, właśnie sprawdziłem i ustawienie Content-Type w ObjectMetadata dla S3 działa w moim przypadku. Nadal chciałbym znać odpowiedź na to pytanie, wydaje się, że może się przydać w przyszłości. – rphutchinson
Wystarczająco fair. Brak typów One Mapping ™ z typami MIME do rozszerzeń plików - niektóre typy mają wiele rozszerzeń, niektóre rozszerzenia mają wiele typów - więc gdy używam magazynu danych, który może działać niezależnie, staram się przechowywać tylko to, co wiem i powstrzymać się od zgadywania. – willglynn