Sto caricando i file su un bucket Amazon s3 e ho accesso a InputStream e una stringa contenente il Tipo MIME del file ma non il nome del file originale. Sta a me creare il nome e l'estensione del file prima di spingere il file fino a S3. Esiste una libreria o un modo conveniente per determinare l'estensione appropriata da utilizzare dal tipo MIME?Come determinare l'estensione del file appropriata da MIME Tipo in Java
Ho visto alcuni riferimenti alla libreria di Apache Tika ma sembra eccessivo e non sono riuscito a farlo per rilevare correttamente le estensioni dei file. Da quello che ho potuto raccogliere sembra che questo codice dovrebbe funzionare, ma sto solo diventando una stringa vuota quando il mio variabile di tipo è "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
}
Sei sicuro di aver bisogno di impostare un'estensione di file? Se conosci il tipo MIME, puoi caricarlo su S3 con l'appropriato 'Content-Type', e l'estensione (di solito) diventa irrilevante. – willglynn
Sei corretto, ho appena controllato, e l'impostazione del Content-Type in ObjectMetadata per S3 fa il trucco nel mio caso. Mi piacerebbe ancora conoscere la risposta alla domanda, sembra che potrebbe tornare utile in futuro. – rphutchinson
Abbastanza giusto. Non ci sono One True Mapping ™ di tipi MIME alle estensioni di file - alcuni tipi hanno più estensioni, alcune estensioni hanno più tipi - quindi quando sto usando un data store che può persistere in modo indipendente, cerco di memorizzare solo ciò che conosco e non cercare di indovinare. – willglynn