我想上传.png文件和存储。当我发送内容类型= multipart / form-data时,我收到此例外
org.springframework.web.HttpMediaTypeNotSupportedException: Content type
'application/octet-stream' not supported .
我认为我的应用程序不了解form-data contentType并抛出一个无关的异常。怎么了?
@Controller
public class ProfileController {
private static final Logger logger = LoggerFactory.getLogger(ProfileController.class);
@Autowired
ProfileService service;
//http : http --pretty all --form PUT localhost:8080/profile/v1?thumb=glb
@PutMapping(value = "/v1")
public Mono<ResponseEntity<String>> upload(@RequestPart(value = "thumb", required = false) String thumbFilterName,
@RequestPart(value = "genthumb", required = false) String genthumb,
@RequestPart("hash") String hash,
@RequestPart("uploader") Long uploader,
@RequestPart("file") MultipartFile file) throws Exception {
System.out.println(thumbFilterName);
System.out.println(gentumb);
System.out.println(uploader);
System.out.println(file);
//and doing storage stuff!
return Mono.just(ResponseEntity.ok().build());
}
}
这是我的Rest Client,用于发送文件。注意回应。
这些是restClient的截图。使用restClient发送文件:
这是设置标题
答案 0 :(得分:1)
在uploader
中,您必须将@RequestPart
更改为@RequestParam
@RequestPart("uploader") Long uploader,
请注意,@ RequestParam注释也可用于将“multipart / form-data”请求的一部分与支持相同方法参数类型的方法参数相关联。主要区别在于,当method参数不是String时,@ RequestParam依赖于通过已注册的Converter或PropertyEditor进行类型转换,而@RequestPart依赖于HttpMessageConverters,并考虑请求部分的“Content-Type”标头。 @RequestParam可能与名称 - 值表单字段一起使用,而@RequestPart可能与包含更复杂内容的部分(例如JSON,XML)一起使用。