Home > OS >  405 Error : multipart/form-data with Spring
405 Error : multipart/form-data with Spring

Time:08-12

I am trying to send a Json string along with multiple files into my Spring Controller, however it would always give me a 405 Method Not Allowed Error, what am I doing wrong?

Javascript Code:


var formdata = new FormData();
formdata.append('user', JSON.stringify(userData));

files.forEach(file=> {
  formdata.append('files', file);
});

jQuery.ajax({
    url: "user/submitForm",
    type: "POST",
    data: formdata,
    enctype: 'multipart/form-data',
    processData: false,
    contentType: false,
    success: function (data)
    {
        console.log("SUCCESS");
    },
    error: function (request, status, error) {
        alert(status   " : "   JSON.stringify(request));
    }
});

Controller in Spring:

@PostMapping(value= "/submitForm", consumes = { 
                        MediaType.APPLICATION_JSON_VALUE, 
                        MediaType.MULTIPART_FORM_DATA_VALUE })
public ResponseEntity<?> userRegistration( @RequestPart("user") String user,
            @RequestPart("files") List<MultipartFile> files, BindingResult bindingResult) {
        
        ObjectMapper obj = new ObjectMapper();
        User newUser = new User();
        newUser = obj.readValue(user, User.class);
        
        System.out.println("User : \n"  newUser.toString());
        System.out.println("Files : \n"  files.toString());
        return null;
}

CodePudding user response:

This was the solution that I found from Antonio112009's answer

SOLUTION

@PostMapping(value = "/submitForm")
public ResponseEntity<?> userRegistration(
            @RequestParam("user") String user,
            @RequestParam(value = "files", required = false) List<MultipartFile> files) {

        ObjectMapper obj = new ObjectMapper();
        User user = new User();
        .
        .
        .
}
    
  • Related