'Spring Boot doesn't recognize multipart form-data element when filename is missing

I have this code:

@PostMapping("foobar")
public ResponseEntity<SaveLogsResult> foobar(@RequestPart("file") MultipartFile log, @RequestPart("env") MultipartFile json){
    return ResponseEntity.ok(fooService.saveFooBar(log, json, UUID.randomUUID().toString()));
}

Two applications send formally correct data to this endpoint, one fails miserably and receives an http status 400.

I set logging.level.org.springframework.web=DEBUG and can see (among other lines) this:

Required request part 'env' is not present
Resolved [org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'env' is not present]
Completed 400 BAD_REQUEST

To further diagnose this I compared a working (left) and a non-working (right) request. The only different is the mising filename:

enter image description here

As far as I understand the RFC for Content-Disposition leaving out the filename is perfectly valid:

Is followed by a string containing the original name of the file transmitted. The filename is always optional and must not be used blindly by the application: path information should be stripped, and conversion to the server file system rules should be done. This parameter provides mostly indicative information. When used in combination with Content-Disposition: attachment, it is used as the default filename for an eventual "Save As" dialog presented to the user.

Is this an error inside Spring ? I use Spring Boot 2.6.2 Unfortunately I can't change the non-working component for a quick test because it is a bought component that doesn't receive bugfixes very often. I think that my problem is different from that described here because the failure only happens in a specific scenario.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source