如何上传文件并获取表单的其他参数?我想在 Java servlet 中处理多部分请求。
要浏览并选择要上传的文件,您需要<input type="file">
表单中的字段。如中所述HTML规范你需要使用POST
方法和表单的 enctype 属性必须设置为multipart/form-data.
<form action="uploadServlet" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" />
</form>
提交此类表单后,表单数据可以在以下位置以多部分格式获取:HttpServletRequest#getInputStream()
。为了测试(!)目的,您可以使用以下代码片段读取流:
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
for (String line; (line = reader.readLine()) != null;) {
System.out.println(line);
}
然而你需要parse流逐字节(而不是逐字符)。在全新之前小服务程序3.0API,标准 Servlet API 没有提供任何内置工具来解析它们。正常表单字段也无法像平常那样使用request.getParameter()
这样,它们就包含在多部分表单数据流中。
如果您还没有使用 Servlet 3.0(它只有不到 2 个月的历史),那么您需要自己解析流。解析此类流需要精确了解多部分表单数据请求的背景知识指定和结构化。要创建完美的多部分解析器,您必须编写大量代码。但幸运的是还有Apache Commons 文件上传多年来已经证明了其稳健性。仔细阅读两份用户指南 and 经常问的问题查找代码示例并学习如何以最佳程度使用它(考虑到 MSIE!)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)