[英]How do you retrieve multipart POST request in Java SE 8?
Java SE 8 comes with the Servlet Spec 3.0 so I thought it would be very easy to process a multipart POST request, but I was wrong. Java SE 8随Servlet Spec 3.0一起提供,因此我认为处理多部分POST请求将非常容易,但是我错了。
I always get zero parts, although I see in the Chrome network debugger that the payload contains two images! 我总是得到零零件,尽管我在Chrome网络调试器中看到有效负载包含两个图像!
What am I doing wrong? 我究竟做错了什么?
Here is my Java Code processing the POST request: 这是我的Java代码处理POST请求:
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 "";
}
It always logs 0 parts. 它总是记录0个部分。
I'm using Tomcat 7 and Java SE 8. 我正在使用Tomcat 7和Java SE 8。
I also think it is very weird to have this getFileName()
method in my own code, I expected Java 8 to do that for me... 我也认为在自己的代码中有此
getFileName()
方法非常奇怪,我希望Java 8能够为我做这件事。
Any hints on how to make this work is very appreciated! 非常感谢您如何进行这项工作的任何提示!
EDITED I removed my previews answer because there is a much better one: https://stackoverflow.com/a/2424824/1484621 I think this will help you. 编辑我删除了我的预览答案,因为有一个更好的答案: https : //stackoverflow.com/a/2424824/1484621我认为这将对您有所帮助。
For clarify, the Java SE 8 and Servlet Spec 3.0 are not bonded together, Sevlet 3.0 can work with java 7 if not earlier versions. 为了澄清起见,Java SE 8和Servlet Spec 3.0没有绑定在一起,如果不是早期版本,Sevlet 3.0可以与Java 7一起使用。 The Servlet specification released by containers, and from here the error you found maybe container depended, switch to another container(Tomcat/Jetty/GlassFish) and try again.
容器发布的Servlet规范,从这里发现的错误可能取决于容器,请切换到另一个容器(Tomcat / Jetty / GlassFish),然后重试。 Good luck!
祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.