【问题标题】:how to get value of input text type in mulitpart form如何以多部分形式获取输入文本类型的值
【发布时间】:2013-10-30 02:32:44
【问题描述】:

我已阅读并遵循通过 commons-fileupload api 上传的示例文件。它在我发布文件时有效,但是当我包含像 input type="text" 这样的普通字段时,字段名称的值似乎为空。在这种情况下,字段名称为电子邮件。这是我正在使用的代码。希望那里有经验的开发人员可以向我指出我做错了什么。谢谢你,祝你有美好的一天!

servlet 类中的代码

        try {                           
            List<FileItem> items = upload.parseRequest(request);

            for (FileItem item : items) {
                if (item.isFormField()) {
                    if(item.getFieldName().equals("email")) { 
                        payLoad.append("&email=" +   item.getString());

                }
                else         {                                              
                    encodedBase64 = new String(Base64.encodeBase64(item.get()));                
                    payLoad.append("&content=" + encodedBase64);
                }
            }
            payLoad = payLoad.deleteCharAt(0); // payLoad = new StringBuffer()

【问题讨论】:

  • &lt;form&gt; 中你使用的是enctype="multipart/form-data" 吗?您需要确保表单具有该属性。
  • 感谢您的回复。是的,我使用了 enctype="multipart/form-data"。我实际上意识到了我的问题。上面的代码有效。我的错误是在发布之前,我从 item.getFieldName() == "email" 更改为 item.getFieldName().equals("email")。

标签: java file-upload


【解决方案1】:

尝试使用此代码(此代码对我来说很好)

private Map<String, String[]> parameterMap = new HashMap<String, String[]>();
for(FileItem item: items){
   if (!item.isFormField()) {
    ...
   } else{
     String field = item.getFieldName();
     String content = item.getString();
     parameterMap.put(field,new String[]{content});
   }
 }

然后就可以打印parameterMap的所有内容了, 我认为您的表单字段的名称不是“电子邮件”

【讨论】:

  • 感谢您的回复。请看我回复马塞洛的评论。很抱歉我的问题不清楚(这是我的第一个问题)。 else 语句处理 !item.isFormField() 条件满足的输入 type="file"。我在处理输入 type=text|radio|etc 的 if 语句遇到问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 1970-01-01
  • 2019-02-13
  • 1970-01-01
  • 2017-02-01
  • 2015-03-30
  • 2021-10-15
相关资源
最近更新 更多