天天看點

今天在使用spring進行檔案下載下傳是,總報錯: java.lang.IllegalStateException: getOutputStream() has already been calle

@ActionAnnotation(name = "鐢熸垚缁撳鎶ュ憡鏂囨。骞朵笅杞?, group = "鏌ヨ")
    public ModelAndView createMarriage(HttpServletRequest request, HttpServletResponse response) throws Exception {
         Management management = managementService.query(request.getParameter("mm_id"));
         Map<String, Object> model = new HashMap<String, Object>();
         model.put("management", management);
         model.put("management", management);
         String view = SystemParameter.get("marriage");
         Template template = freeMarkerConfigurer.getConfiguration().getTemplate(SystemParameter.get("tempDirSoldier") + "/marriage.ftl", "utf-8");
         String temp = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
         File file = new File(getServletContext().getRealPath(view));
         FileUtils.writeStringToFile(file, temp, "utf-8");
         response.setContentType("text/html; charset=GBK");
         response.setContentType("application/x-msdownload");   //璁劇疆response鐨勭紪鐮佹柟寮?         response.setContentLength((int) file.length());   //鍐欐槑瑕佷笅杞界殑鏂囦歡鐨勫ぇ灏?         response.setHeader("Content-Disposition", "attachment;filename=" + new String(view.getBytes("gbk"), "iso-8859-1"));//瑙e喅涓枃涔辯爜
         FileInputStream fis = new FileInputStream(file);   //鍒涘緩杈撳叆娴?         BufferedInputStream buff = new BufferedInputStream(fis);    //鍒涘緩鏂囦歡缂撳啿
         OutputStream out = response.getOutputStream();
         byte[] b = new byte[1024]; //璁劇疆缂撳啿澶у皬
         long k = 0; //鐢ㄤ簬鍒ゆ柇鏂囦歡闀垮害鏄惁涓?
         while (k < file.length()) {
             int j = buff.read(b, 0, 1024);
             k += j; //  绱鏂囦歡闀垮害
             out.write(b, 0, j);
         }
         out.flush();  //灏嗘枃浠舵暟鎹埛鏂闆埌鐢ㄦ埛鍚嶇數鑴戜笂
         fis.close();
         out.close();
         file.delete(); // 鍒犻櫎涓存椂鏂囦歡
         return  null;
    }      

繼續閱讀