使用multipart发送附加数据

Bhu*_*han 10 java jsp servlets file-upload apache-commons-fileupload

我使用apache-commons-fileupload从获取文件clientserver.(使用JSPServlet).

JSP/HTML

<form method="POST" action="GetFile" enctype="multipart/form-data">
<input type="file" name="datafile">
<input type="text" name="text1">
<input type="submit" value="Next">
</form>
Run Code Online (Sandbox Code Playgroud)

Servlet:GetFile

System.out.println(request.getParameter("text1"));
Run Code Online (Sandbox Code Playgroud)

我能上传文件到服务器上,但我不能够得到的值text1servlet(我得到null的值text1servlet),我需要这样textfield的形式提交一些额外的信息,同时上传到server.

  • enctype="multipart/form-data"形式的选项不允许其他形式的数据所需提交?如果它不允许它,那么我必须将其他选项发送textfield给它server.
  • 或者我的代码中还有其他问题吗?

Sud*_*kar 13

那么参数不会丢失,只是它们是请求Stream的一部分.

您必须从请求中获取所有项目,并根据其项目类型进行相应的迭代和处理

List  items = upload.parseRequest(request);
Run Code Online (Sandbox Code Playgroud)

继承人你怎么能得到它

// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
    FileItem item = (FileItem) iter.next();

    if (item.isFormField()) {

      String name = item.getFieldName();//text1
      String value = item.getString();

    } else {
        processUploadedFile(item);
    }
}
Run Code Online (Sandbox Code Playgroud)


Har*_*Joy 12

enctype="multipart/form-data"形式的选项不允许其他形式的数据所需提交?如果它不允许它,那么我必须将此附加文本字段发送到服务器的其他选项是什么.

没有使用问题enctype="multipart/form-data".您可以获得其他字段,然后以这种形式提交.

或者我的代码中还有其他问题吗?

是的,就像现在一样.使用enctype="multipart/form-data"时无法通过使用直接获取参数request.getParameter(name);.使用它时,表单字段不可用作请求的参数,它们包含在流中,因此您无法以正常方式获取它.您可以在使用commons-fileupload的文档中找到一种方法,在处理上传的项目下.