I'm doing a file upload, and I want to get the Mime type from the uploaded file.
I was trying to use the request.getContentType(), but when I call:
String contentType = req.getContentType();
It will return:
multipart/form-data; boundary=---------------------------310662768914663
How can I get the correct value?
Thanks in advance
It sounds like as if you're homegrowing a
multipart/form-data
parser. I wouldn't recommend to do that. Rather use a decent one like Apache Commons FileUpload. For uploaded files, it offers aFileItem#getContentType()
to extract the client-specified content type, if any.If it returns
null
(just because the client didn't specify it), then you can take benefit ofServletContext#getMimeType()
based on the file name.This will be resolved based on
<mime-mapping>
entries in servletcontainer's defaultweb.xml
(in case of for example Tomcat, it's present in/conf/web.xml
) and also on theweb.xml
of your webapp, if any, which can expand/override the servletcontainer's default mappings.You however need to keep in mind that the value of the multipart content type is fully controlled by the client and also that the client-provided file extension does not necessarily need to represent the actual file content. For instance, the client could just edit the file extension. Be careful when using this information in business logic.
Related:
just use:
You could use MimetypesFileTypeMap
However, you would encounter the overhead of editing the mime.types file, if the file type is not already listed. (Sorry, I take that back, as you could add instances to the map programmatically and that would be the first place that it checks)