Итак, я пытаюсь получить многопользовательский файл из базы данных sql из контроллера Springboot. Я использовал этот ajax запрос:
Вот мой контроллер api
@PostMapping("/fetch-file-data")
public ResponseEntity<?> getFile(@RequestBody Long id){
FileData file = fileService.getFile(id);
System.out.println("file name is: " + file .getFileName());
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(file .getFileType()))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file .getFileName() + "\"")
.body(new ByteArrayResource(file .getData()));
}
Мой объект содержит следующее с соответствующими геттерами и сеттерами:
private String fileName;
private String fileType;
@Lob
private byte[] data;
The Ajax Запрос:
$.ajax({
type : "POST",
contentType : "application/json",
url :"/api/fetch-file-data",
data: JSON.stringify(id),
/* dataType : "application/pdf", */
cache : false,
timeout : 600000,
success : function(data) {
alert("IM HERE SUCCESS");
console.log("SUCCESS : ", data);
var pdfData =new Blob([data.data]);
var link=document.createElement('a');
link.href=window.URL.createObjectURL(pdfData);
link.download=data.fileName;
link.click();
},
error : function(e) {
alert("IM HERE FAIL FETCHING");
console.log("ERROR : ", e);
}
});
Браузер загружает файл, но не загружается. Я попытался использовать тип данных: "application / pdf", но в журналах консоли говорится, что произошла ошибка синтаксического анализа, поэтому я закомментировал ее.