когда я использую ZipOutputStream (response.getOutputStream ()) throw java .lang.IllegalStateException: getWriter () уже был вызван для этого ответа - PullRequest
0 голосов
/ 16 апреля 2020

Весной MVC Я пытаюсь отправить клиенту ответ на загрузку zip-файла, но Мой код выдает здесь исключение. исходный код ниже:

    import java.util.zip.ZipOutputStream;

    @RequestMapping(value="api/saf", method = RequestMethod.GET, produces="application/zip")
         public String getsod(HttpServletRequest request, HttpServletResponse response) throws Exception {
                try {
                    response.setStatus(HttpServletResponse.SC_OK);
                    response.setHeader("Content-Disposition","attachment; filename="a.zip");
                    ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream());
                     .
                     Omitted
                     .
                     return ""
                   }
     }

, но здесь будет выдано исключение:

2020-04-16 16:43:55,405   ERROR Controller: java.lang.IllegalStateException: getWriter() has already been called for this response
    at org.apache.catalina.connector.Response.getOutputStream(Response.java:548)
    at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:210)
    at javax.servlet.ServletResponseWrapper.getOutputStream(ServletResponseWrapper.java:105)
    at csv.getsod(csv.java:11)

csv. java: 11 - это просто код ниже:

 ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream());

и мой код запускается в Tomcat 9.0.33. Может ли кто-нибудь дать подсказку об этом исключении? спасибо.

ps: я считаю, что эта ошибка не из-за ошибки в коде. Это может быть потому, что я использую IDE в режиме отладки. Спасибо всем.

...