Rest API java spring - загрузка текста и pdf в базу данных PostgreSQL (почтальон - данные формы) - PullRequest
1 голос
/ 17 марта 2020

Я делаю REST API весной Java. Я хочу сделать почтовый запрос в почтальоне и загрузить текст и файл PDF в мою базу данных postgreSQL. Связь работает. Я проверил это с другой конечной точкой. Я перепробовал много вещей, но ни одна из них не работает.

Я слышал, что вы можете сделать это с почтальоном - Данные формы.

Что я пробовал: добавил это в @PostMapping () -> Безуспешно

consumes = MediaType.MULTIPART_FORM_DATA_VALUE

В почтальоне: добавлено Content-type : application/json и Content-type : multipart/form-data

Оба безуспешно: (...

Ниже моего restcontroller

@RestController
public class SheetMusicController {

    @Autowired
    SheetMusicRepository sheetMusicRepository;

    @GetMapping("/sheetmusic")
    public List<SheetMusic> index(){
        return sheetMusicRepository.findAll();
    }

    @PostMapping(value = "/sheetmusic")
    public SheetMusic create(@RequestBody Map<String,String> body){
        String title = body.get("title");
        byte[] pdf = "".getBytes();

        SheetMusic sheetMusic = new SheetMusic(title,"","","",pdf);
        return sheetMusic;
    }
}

И фотография почтальона Почтальон

Я не понимаю, что я делаю не так. Надеюсь, вы, ребята, можете мне помочь!

Привет,

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Вы должны реализовать запрос multipart form-data:

Первый , необходимо добавить в maven:

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

Второй , вам нужно добавить эту Bean конфигурацию:

@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
    CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
    multipartResolver.setMaxUploadSize(100000);
    return multipartResolver;
}

Наконец , ваш Post метод должен выглядеть следующим образом:

@PostMapping(value = "/sheetmusic")
public SheetMusic create(@RequestParam("file") MultipartFile file, @RequestParam("title") String title) {
    // Your business
}

ПРИМЕЧАНИЕ : для Postman вам просто нужно выбрать тип тела form-data, и Content-Type будет установлен автоматически.

0 голосов
/ 17 марта 2020

Измените @Postmapping на @Requestmapping. Это должно работать тогда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...