在JSP中解码HTML表单数据

时间:2014-05-20 06:54:31

标签: html jsp post

我在工作时遇到了问题,

假设我必须上传客户端文件,所以我正在使用

<form action='UploadFile.jsp' method='post' enctype='multiform/form-data'>
  <input type='file' name='data' id='filechooser'>
</form>

在我需要在表单中添加更多细节之前,情况还不错

现在表单中还包含2个输入标记

<form action='UploadFile.jsp' method='post' enctype='multiform/form-data'>
  <input type='file' name='data' id='filechooser'>
  <input type='number' name='no_of_days'/>
  <input type='date' name='dat'/>
</form>

现在,当我使用request.getParameter()方法访问它们时,其他两个元素显示为null。

我在this教程

中使用了UploadFile

我尝试了什么?

我检查了this这个问题并不相似,但有一个看似正确的答案并尝试了答案,但我一直在为此行获取NullReferenceException

BufferedReader reader = new BufferedReader(new InputStreamReader(part.getInputStream(), "UTF-8"));

这行代码是上述链接问题

中答案的一部分

1 个答案:

答案 0 :(得分:1)

如果你正在使用Commons库(我相信你是因为你在问题中提到的链接) - 你可以简单地得到简单的参数:

FileItem类有一个名为isFormField的方法,如果此Item表示一个简单的表单字段,它将返回true。在您知道特定FileItem是一个简单的表单字段后,您可以使用getFieldNamegetString来获取此字段的名称/值。

基本上,如果您使用了您提到的示例中的代码,则可以执行以下操作:

if (!fi.isFormField ()) {
    // Get the uploaded file parameters
    ..... code for file field ....
} else {
    //it's a simple form field - get it's name and value and do whatever you need    
    String fieldName = fi.getFieldName();
    String fieldValue = fi.getString();
}