Identify html form or its encoding (text or file) in servlet
-
11-06-2021 - |
Domanda
How do I recognize in a servlet whether the request sent using HTML form has enctype multipart/form-data
or the default application/x-www-form-urlencoded
?
Alternatively: is there any other way to recognize which form was used? request.getParameter("some_param")
works only with default encoding.
Soluzione
I'm using Apache Commons FileUpload for multipart, but wasn't sure how to switch between handling multipart and default forms
Use Apache Commons FileUpload's own ServletFileUpload#isMultipartContent()
to check it.
if (ServletFileUpload.isMultipartContent(request)) {
// Parse with FileUpload.
}
else {
// Use normal getParameter().
}
See also:
Altri suggerimenti
You can identify using Content-Type:
header
if(HttpServletRequest.getContentType().contains("form-data")){
//handle multipart data
....
} else if(HttpServletRequest.getContentType().contains("x-www-form-urlencoded")){
//handle from data
....
}
If the web container supports Servlet 3.0, the use HttpServletRequest.getParts() API.
if(request.getParts() !=null){
//handle multipart
} else {
//handle form data
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow