Как лучше всего передать данные с файлом из Angular в Spring Webflux?
Я пытаюсь передать через форму информацию о музыке + сам файл. Файл хранится в БД в байтовом формате.
Проблема была в том, что выходило передавать либо только файл, либо данные. Получилось решить переводя файл в Base64, но без использования FormData.
reader.readAsDataURL(this.fileToUpload);
reader.onload = () => {
array = reader.result;
music.musicfile = array;
this.musicService.saveMusic(music).subscribe(data => console.log(data));
};
saveMusic(music: Music): Observable<any> {
return this.http.post<Music>(`${this.baseUrl}` + 'addMusic', music);
}
Потом декодирую его в byte[] перед сохранением.
@PostMapping("/music/addMusic")
public Mono<Music> addMusicGet(@RequestBody MusicGet musicGet){
Music music = new Music(musicGet);
musicService.decode64Music(music,musicGet.getMusicfile());
return musicService.addMusic(music);
}
public void decode64Music(Music music, String url) {
music.setMusicfile(Base64.getMimeDecoder().decode(url));
}
Выглядит как велосипед, но не знаю, как сделать лучше. Есть идеи?