Загрузите Multiparted File из контроллера Springboot, используя Ajax - PullRequest
0 голосов
/ 23 января 2020

Итак, я пытаюсь получить многопользовательский файл из базы данных 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", но в журналах консоли говорится, что произошла ошибка синтаксического анализа, поэтому я закомментировал ее.

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