【发布时间】:2017-03-28 15:16:26
【问题描述】:
Java SE 8 附带了 Servlet Spec 3.0,所以我认为处理多部分 POST 请求会很容易,但我错了。
我总是得到零部分,尽管我在 Chrome 网络调试器中看到有效负载包含两个图像!
我做错了什么?
这是我处理 POST 请求的 Java 代码:
if (request.isMultipartRequest()) {
Collection<Part> parts = request.getParts();
log.info("number of parts: "+parts.size());
for (Part part : parts) {
String fileName = getFileName(part);
log.info("fileName = "+fileName);
}
}
...
private String getFileName(Part part) {
String contentDisp = part.getHeader("content-disposition");
System.out.println("content-disposition header= "+contentDisp);
String[] tokens = contentDisp.split(";");
for (String token : tokens) {
if (token.trim().startsWith("filename")) {
return token.substring(token.indexOf("=") + 2, token.length()-1);
}
}
return "";
}
它总是记录 0 个部分。
我正在使用 Tomcat 7 和 Java SE 8。
我也认为在我自己的代码中使用这个 getFileName() 方法很奇怪,我希望 Java 8 能为我做到这一点......
非常感谢任何有关如何完成这项工作的提示!
【问题讨论】:
-
您确实在混淆术语 - Java 8 与 Servlet 规范没有直接关系 - Java EE (JEE) 是。不管怎样,你似乎找到了the tutorial——你都关注了吗?
-
@stdunbar 是的,你是对的,Servlet 3.0 附带在 Java 8 上运行的 Tomcat 7(在我的具体情况下)。很抱歉。
标签: java servlets java-8 multipart servlet-3.0