天天看点

今天在使用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;
    }      

继续阅读