Spring - download file and redirect

You can't download file and make refresh/redirect. I'll try to explain causes. Request flow is illustrated here: enter image description here

where yellow circle is your controller. When you return view name front controller looks for appropriate view template (simply jsp, tiles or other, depending on configured view resolver) gets response and write generated html (or not html) code to it.

In your case you perform actions:

response.getOutputStream().write(baos.toByteArray());
response.getOutputStream().close();
response.getOutputStream().flush();

After that actions spring can't open response and write refreshed page to it (because you do it before). So you can change your method signature to:

public void exportToXML(HttpServletResponse response, Model model, @ModelAttribute(FILTER_FORM) ScreenModel form,
        BindingResult result, OutputStream out,
        HttpSession session) throws IOException {

and delete last "return VIEW_NAME". Nothing will change.


You can:

response.setHeader("Refresh", "1; url = index");

This refresh the page after 1 second after response on URL: "index".


It will not. The browser opens the ms-excel contentType in a new window or you get a download prompt. The page that initiated download never get a chance to handle the redirect or page transition.

If the download + page refresh is desired, a JavaScript function could initiate the download and direct the user to next page, that page could say 'your download will commence shortly' or something similar.