我有一个servlet,用于许多不同的操作,在前端控制器模式中使用.有谁知道是否可以判断回发的数据是否为enctype ="multipart/form-data"?在我决定之前,我无法读取请求参数,因此我无法将请求分派给适当的控制器.
有任何想法吗?
如果您打算尝试使用上面提到的request.getContentType()方法,请注意:
request.getContentType()可能返回null.
request.getContentType()可能不等于 "multipart/form-data",但可能只是从它开始.
考虑到这一点,您应该运行的检查是:
if (request.getContentType() != null && request.getContentType().toLowerCase().indexOf("multipart/form-data") > -1 ) { // Multipart logic here }
是的,Content-type
用户代理请求中的标头应包含multipart/form-data
(至少)HTML4规范中所述:
http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2
您可以调用方法来获取内容类型.
http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html#getContentType()
根据http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2,内容类型将是"multipart/form-data".
别忘了:
request.getContentType()可能返回null.
request.getContentType()可能不等于"multipart/form-data",但可能只是从它开始.
所以,考虑到这一切:
if (request.getContentType() != null && request.getContentType().toLowerCase().indexOf("multipart/form-data") > -1 ) { << code block >> }