如何从Java Servlet中的HttpServletRequest获取文件

时间:2013-03-01 15:31:14

标签: java servlets

HTML中的表单就像

...
<form method="post" action="/foobar">
  <input type="file" name="attachment" />
  <input type="text" name="foo" />
  ... other input fields
</form>

Servlet就像

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String attachment = request.getParameter("attachement");
    String foo = request.getParameter("foo");
    // get other parameters from the request
    // and get the attachment file
}

我想知道

  1. 有没有办法不使用第三方库从HttpServletRequest对象获取文件?

  2. request.getParameter("attachement")返回什么?是文件名还是其他什么?

  3. 二进制输入是由文件系统中的Web容器自动存储还是暂时存储在内存中?

2 个答案:

答案 0 :(得分:1)

在任何行动之前

你的表格行动应该是“POST”和enctype =“multipart / form-data”。

说...为了获得文件,你必须自己准备好请求。

你应该检查:

Multipart requests/responses java

答案 1 :(得分:0)

添加您的表单 ENCTYPE = “多部分/格式数据”

<form name="formname" action="servletName" method="post"  enctype="multipart/form-data">
<input type="file" name="attachment" />
  <input type="text" name="foo" />
  ... other input fields
</form>

现在提交表单时 在控制器方面,您可以通过

获取图片
String picture = (request.getParameter("attachment")).getBytes();

我假设文件是​​图像,你可以传递任何文件