I wrote code to get part data from a Servlet request for file upload, but the part list returns zero size. I use JBoss Weld in the JEE project.
But if I remove the Weld configuration from the web.xml file, then it's working fine.
The web.xml configuration is:
<listener>
<listener-class>
org.jboss.weld.environment.servlet.Listener</listener-class>
</listener>
<resource-env-ref>
<description>
Object factory for the CDI Bean Manager
</description>
<resource-env-ref-name>BeanManager</resource-env-ref-name>
<resource-env-ref-type>
javax.enterprise.inject.spi.BeanManager
</resource-env-ref-type>
</resource-env-ref>
The server-side code in the Servlet:
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
Collection<Part> parts = request.getParts();
System.out.println(parts.size());
}
}
The client-side JavaScript:
$('#input-file').change(function(e) {
var obj = {
"name" : "samik"
};
var file = e.target.files[0];
var formData = new FormData();
formData.append('file', file);
formData.append('other', JSON.stringify(obj));
$.ajax({
url : "upload",
type : "POST",
data : formData,
contentType : false,
processData : false,
dataType : "json",
success : function() { }
});
});