HttpServletResponse response: попросить пользователя загрузить файл вместо автоматической загрузки - PullRequest
1 голос
/ 25 февраля 2011

Это мой код загрузки.Он просто начинает скачивать файл, не спрашивая пользователя.Я искал несколько форумов и ничего не работает.Это код в компоненте поддержки, прикрепленном к кнопке commandButton.

public void doDownloadFile() {   

    PrintWriter out = null;

    try {
        HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();   
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-disposition", "attachment;filename=test.csv");
        out = response.getWriter();
        CSVWriter writer = new CSVWriter(out);

        List<String[]> stringList = new ArrayList<String[]>();

        for (User user : userList) {

            String[] string = {user.getEmail(), user.getName(), user.getPassword()};
            stringList.add(string);
        }

        writer.writeAll(stringList);
        out.flush();

    } catch (IOException ex) {
        Logger.getLogger(ViewLines.class.getName()).log(Level.SEVERE, null, ex);     
    } finally {
        out.close();
    }
}

Ответы [ 2 ]

2 голосов
/ 25 февраля 2011

Поведение при загрузке на 100% локально, то есть браузер, а не вы, определяет, что делать в этом случае.Будет ли браузер пользователя просто выгружать файл в папку загрузки или позволяет ему сохранить его в определенном месте, полностью зависит от браузера.

Не так много, чтобы сделать.

2 голосов
/ 25 февраля 2011

Скорее всего, это связано с тем, что ваш браузер настроен для загрузки файлов этих типов без запроса.Код не имеет к этому никакого отношения.

...