Required MultipartFile parameter none - Spring Download REST POST

I am trying to make a proof of concept in which a .Net system sends a file to a Rest endpoint in a Java Spring Boot application. I keep getting the error "The required parameter is missing." With this error, many SO questions arise, and I tried to find the solutions presented in them without any luck. Can anyone see what I'm doing wrong?

Here is my C # code:

private async Task<string> PostFileAsync(string uri, System.IO.FileStream fileStream) { using (var client = _httpClientFactory()) { using (var content = new MultipartFormDataContent()) { content.Add(new StreamContent(fileStream), "assetFile"); using (var message = await client.PostAsync(uri, content)) { return await message.Content.ReadAsStringAsync(); } } } } 

Here's a request, as Fiddler sees:

 POST http://10.0.2.2:8083/asset/1000/1001 HTTP/1.1 Content-Type: multipart/form-data; boundary="bac9aebd-d9ff-40ef-bcf3-4fffdd1b2c00" Host: 10.0.2.2:8083 Content-Length: 158 Expect: 100-continue Connection: Keep-Alive --bac9aebd-d9ff-40ef-bcf3-4fffdd1b2c00 Content-Disposition: form-data; name=assetFile foo,bar,10 foo2,bar2,12 --bac9aebd-d9ff-40ef-bcf3-4fffdd1b2c00-- 

Here is my controller:

 @RestController @RequestMapping("/asset/") public class AssetController { @RequestMapping(path="{merchantId}/{assetId}", method=RequestMethod.POST) public String getAsset( HttpServletRequest request, @RequestParam("assetFile") MultipartFile file, @PathVariable("merchantId") long merchantId, @PathVariable("assetId") long assetId) throws IOException { return "It worked!"; } } 

Here is my configuration:

 @SpringBootApplication(exclude={MultipartAutoConfiguration.class}) public class MySpringApplication { public static void main(String[] args) { SpringApplication.run(MySpringApplication.class, args); } @Bean(name = "multipartResolver") public CommonsMultipartResolver multipartResolver() { System.out.println("multipartResolver()"); CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); return multipartResolver; } } 

And here is the answer:

 HTTP/1.1 400 Bad Request Server: Apache-Coyote/1.1 Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Fri, 25 Mar 2016 19:34:55 GMT Connection: close f3 {"timestamp":1458934495566,"status":400,"error":"Bad Request","exception":"org.springframework.web.bind.MissingServletRequestParameterException","message":"Required MultipartFile parameter 'assetFile' is not present","path":"/asset/1000/1001"} 0 

Edited because I sent the wrong C # code

+5
source share
1 answer

Well, maybe I haven't tried ALL the solutions I've seen on SO.

This question had a solution for me.

I had to use @ModelAttribute , not @RequestParam .

+3
source

Source: https://habr.com/ru/post/1245789/


All Articles