Генерация и загрузка файла CSV с использованием apache common csv - PullRequest
0 голосов
/ 09 апреля 2020

Я использовал приведенный ниже метод для создания и загрузки CSV-файла из базы данных

String path= request.getServletContext().getRealPath("assets/file.csv");
        try{
            BufferedWriter bufferedWriter = Files.newBufferedWriter(Paths.get(path));
            CSVPrinter csvPrinter = new CSVPrinter(bufferedWriter, CSVFormat.DEFAULT.withHeader("Name"));
            for(String name: names){
                csvPrinter.printRecord(name);
            }
            csvPrinter.flush();
            csvPrinter.close();
            jsonObject.addProperty("result", "succ");
        }catch (Exception e) {
            e.printStackTrace();
        }

И я использую ajax для вызова этого метода. Мой jsp файл, где вызывается этот метод

<% String file= request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
    + request.getContextPath() + "/assets/file.csv";
%>
<button id="download" type="button">Download</button>
<a id="file" target="_blank" href="<%= file%>" style="display: none"></a>

<script type="text/javascript">
        $(function(){
            $('#download').on('click', function(){
                $.ajax({
                    //ajax code
                    success: function(response){
                        console.log(response);
                        var resp = JSON.parse(response);
                        if(resp.result == "succ"){
                            document.getElementById("file").click();
                        }
                    },
                    error: function(xhr, err){

                    }
                });
            });

Но проблема в том, что когда я пытаюсь загрузить файл в первый раз, он возвращает страницу 404, а когда я снова запускаю, он возвращает последний сгенерированный файл.

После отладки я обнаружил, что файл генерируется поздно.

...