【问题标题】:How can my Servlet receive parameters from a multipart/form-data form?我的 Servlet 如何从 multipart/form-data 表单接收参数?
【发布时间】:2012-03-28 20:36:10
【问题描述】:

我有一个页面有这段代码:

<form action="Servlet" enctype="multipart/form-data">
<input type="file" name="file">
<input type="text" name="text1">
<input type="text" name="text2">
</form>

当我在我的 Servlet 中使用 request.getParameter("text1"); 时,它显示为空。如何让我的 Servlet 接收参数?

【问题讨论】:

标签: java servlets parameters multipart form-data


【解决方案1】:

使用getParts()

【讨论】:

  • getParts() 来自哪个类?
【解决方案2】:

所有请求参数都嵌入到多部分数据中。您必须使用 Commons File Upload 之类的方法提取它们:http://commons.apache.org/fileupload/

【讨论】:

    【解决方案3】:

    Pleepleus 是对的,commons-fileupload 是一个不错的选择。
    如果您在servlet 3.0+ environment 工作,您还可以使用它的 multipart 支持轻松完成 multipart-data 解析工作。只需在servlet类上添加@MultipartConfig,调用request即可接收文本数据。getParameter(),非常简单。

    Tutorial - Uploading Files with Java Servlet Technology

    【讨论】:

      【解决方案4】:

      你需要像这样发送参数:

      writer.append("--" + boundary).append(CRLF);
      writer.append("Content-Disposition: form-data; name=\"" + urlParameterName + "\"" )
                      .append(CRLF);
      writer.append("Content-Type: text/plain; charset=" + charset).append(CRLF);
      writer.append(CRLF);
      writer.append(urlParameterValue).append(CRLF);
      writer.flush();
      

      在 servlet 端,处理表单元素:

      items = upload.parseRequest(request);
      Iterator iter = items.iterator();
      while (iter.hasNext()) {
             item = (FileItem) iter.next();
             if (item.isFormField()) {
                name = item.getFieldName(); 
                value = item.getString();
      
         }}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-08
        • 1970-01-01
        • 2017-09-20
        相关资源
        最近更新 更多