识别servlet中的输入标记

时间:2014-03-27 11:18:42

标签: java servlets

在我的文件上传servlet中,我有4个输入标签,如下所示

<li>Left File :  <input type="file" name="dataFile1" id="fileChooser1" /></li><li><br></li>
<li>Right File : <input type="file" name="dataFile2" id="fileChooser2" /></li><li><br></li>
<li>Config File :<input type="file" name="dataFile3" id="fileChooser3" /></li><li><br></li>
<li>final File :  <input type="file" name="dataFile4" id="fileChooser4" /></li><li><br></li>
<li><button type="button" id="execute" onclick="ValidateFile()">Click to Upload files</button></li>

现在,在我的upload.java中,我想确定从哪个文件上传输入文件。

我尝试过使用,

String file1 = request.getParameter("dataFile1").toString();
String file2 = request.getParameter("dataFile2").toString();
String file3 = request.getParameter("dataFile3").toString();
String file4 = request.getParameter("dataFile4").toString();

if (file1 != null)
{
  //use apache commons and upload file
  out.println("left file uploaded");
}

但这不起作用。

如何识别文件上传的输入标签?

1 个答案:

答案 0 :(得分:0)

这不是您处理文件上传的方式

也许检查this answer

相关部分是来自apache commons-fileupload的ServletFileUploadFileItem,反过来FileItem有一个获取field name的方法。

以下是一些示例代码(来自上面链接的答案):

    FileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    List items = null;
    try {
        items = upload.parseRequest(request);
    } catch (FileUploadException e) {
        e.printStackTrace();
    }
    Iterator itr = items.iterator();
    while (itr.hasNext()) {
        FileItem item = (FileItem) itr.next();
        if (item.isFormField()) {
        } else {
            try {
                String itemName = item.getName();
                String itemField = item.getFieldName();
                if (itemField.equals("datafile1")) {
                    // do things for left side
                } else if (itemField.equals("datafile2")) {
                    // do things for right side
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }