Загрузите файл, используя java-скрипт и весеннюю загрузку - PullRequest
0 голосов
/ 11 ноября 2018

Это мой код JavaScript:

$('#downloadTraining').on('click', function () {
    $.get(restbase() + "/download-training/" + $('[name=trainingId]').val()).done(function(data) {
            }).fail(function(data) {
            errorAlert();
        }).always(function(data) {
    });
});

И это мой метод контроллера весенней загрузки:

@GetMapping("/r/download-training/{trainingId}")
public ResponseEntity<InputStreamResource> download(@PathVariable("trainingId") Integer trainingId) throws FileNotFoundException, JRException, IOException{
    File file = jasperReportService.createTrainingReport(trainingId);
    InputStreamResource resource = new InputStreamResource(new FileInputStream(file));  
    return ResponseEntity.ok()
                    // Content-Disposition
                    .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + file.getName())
                    // Content-Type
                    .contentType(MediaType.parseMediaType("application/octet-stream"))
                    // Contet-Length
                    .contentLength(file.length()) //
                    .body(resource);
}

Работает вызов метода get из javascript.Получение файла работает.Но он не загружает файл.Что-то, что мне нужно добавить в JavaScript или ошибка в Java?

Заголовки ответа и запроса: http://prntscr.com/lh01zx

1 Ответ

0 голосов
/ 11 ноября 2018

У меня есть решение, но я не знаю, ожидаете ли вы этого. Во-первых, я никогда не слышал о спринт-ботинке, так что извините. Но когда дело доходит до загрузки файлов с помощью JavaScript, я всегда использую этот метод. Этот метод загружает файлы с блобом и прямо из браузера.

код:

//saving and downloading a file with a js blob;
function downloadFile(data, filename, type) {
    var file = new Blob([data], {type: type});
    if (window.navigator.msSaveOrOpenBlob) {
        window.navigator.msSaveOrOpenBlob(file, filename); //IE 10+
    } else {
        var a = document.createElement("a");
        var url = window.URL.createObjectURL(file);
        a.href = url;
        a.download = filename;
        document.body.appendChild(a);
        a.click();
        setTimeout(function() {
            document.body.removeChild(a);
            window.URL.revokeObjectURL(url);
        }, 0);
    }
}

Я получил этот код из этого вопроса: JavaScript: создание и сохранение файла

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