【问题标题】:Identifying input tag in servlet识别servlet中的输入标签
【发布时间】:2014-05-06 07:57:08
【问题描述】:

在我的文件上传 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");
}

但这不起作用。

如何识别文件是从哪个输入标签上传的?

【问题讨论】:

    标签: java servlets


    【解决方案1】:

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

    也许检查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();
                }
            }
        }
    

    【讨论】:

    • 我想根据输入的标签描述明确识别上传的是哪个文件。
    • @Zedai 你是说标签吗?标签不会在 POST 数据中发送,如果您的意思是输入名称/ID,那么该链接应该为您提供所需的内容
    • 例如,如果正在上传左侧文件,我需要对其执行一些操作,如果正在上传右侧文件,那么我需要对其执行一组不同的操作。我知道标签不会在 POST 中发送,这就是我尝试输入标签名称的原因。
    • @Zedai,我知道你的意思,就像我说的使用 FileItem.getFieldName 来知道上传的文件属于哪个字段并进行操作。
    猜你喜欢
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2017-01-16
    • 2012-11-06
    • 1970-01-01
    • 2015-12-26
    相关资源
    最近更新 更多