#java #spring #spring-boot #http #upload
#java #spring #пружинный ботинок #http #загрузка
Вопрос:
У меня есть этот класс запроса DTO
Public Class MyRequestDTO(){
private String name;
private MultipartFile docPic;
}
я хочу получить в контроллере
@PostMapping("/test")
public String test(@RequestBody MyRequestDTO dto){
system.out.print(dto.getdocPic.getOriginalFileName());
return "success;
}
но всегда получаю javaNullexception, когда я пытаюсь отобразить этот вновь запрошенный файл, правильно ли сопоставлять многокомпонентный файл внутри DTO?
Ответ №1:
С последней версией spring boot у нас есть работающий пример без аннотации @RequestBody, так что попробуйте это:
@PostMapping("/test")
public String test(MyRequestDTO dto){
Если это не сработает, следующее место, которое вы должны перепроверить, — это ваш запрос. В частности , тот Content-type
. Приведенная выше подпись работает для нас с запросом, который имеет тип содержимого: multipart/form-data
Комментарии:
1. Кроме того, я думаю, вы хотели скрыть свой фактический код и написали здесь аналогичную версию, но было бы здорово, если бы это была действительная JAVA, иначе мне было неудобно читать 🙂 … Пример:
Public Class MyRequestDTO()
,return "success;
Ответ №2:
Вы получаете javaNullexception, потому что вы получаете MyRequestDTO dto как null или какое-либо свойство объекта dto указывает на null.
Поэтому, пожалуйста, убедитесь, прежде чем вызывать метод getter для нулевого объекта.
Во-первых, убедитесь, что dto.getdocPic не указывает на null.
@PostMapping("/test")
public String test(@RequestBody MyRequestDTO dto){
if(dto.getdocPic() != null){
system.out.print(dto.getdocPic().getOriginalFileName());
}
return "success;
}